您经常看到数据库字段的大小设置为255个字符,传统的/历史的原因是什么?我认为这与分页/内存限制和性能有关,但255和256之间的区别一直困扰着我。
varchar(255)
考虑到这是容量或大小,而不是索引器,为什么首选255而不是256?字节是否为某些目的(终止符或null或其他)而保留?
想必varchar(0)是一个胡说八道(有零容量)?在哪种情况下2^8的空间应该是256 ?
是否存在其他提供性能好处的级别?例如,varchar(512)的性能是否低于varchar(511)或varchar(510)?
这个值是否适用于所有的关系数据库,无论是旧的还是新的?
免责声明-我是一个开发人员而不是一个DBA,我使用的字段大小和类型适合我的业务逻辑,但我想知道这种偏好的历史原因,即使它不再相关(但如果它仍然相关)。
编辑:
感谢你的回答,似乎有一些共识,字节是用来存储大小的,但这并不能确定地解决这个问题。
如果元数据(字符串长度)存储在相同的连续内存/磁盘中,这是有意义的。1字节的元数据和255字节的字符串数据将非常适合彼此,并适合256个连续字节的存储,这大概是整洁的。
但是…如果元数据(字符串长度)与实际的字符串数据分开存储(可能在主表中),那么仅仅因为存储1字节整数的元数据更容易,就将字符串数据的长度限制为1字节,这似乎有点奇怪。
在这两种情况下,这似乎都是一个微妙的问题,可能取决于DB实现。使用255的做法似乎很普遍,所以一开始肯定有人在某个地方提出了一个很好的例子,有人记得那个例子是什么吗?程序员不会无缘无故地采用任何新的实践,而这一定曾经是新的。