您经常会看到数据库字段设置为255个字符,传统/历史原因是什么?我认为它与分页/内存限制和性能有关,但255和256之间的区别总是让我感到困惑.
varchar(255)
Run Code Online (Sandbox Code Playgroud)
考虑到这是容量或幅度,而不是索引器,为什么255优先于256?是为某种目的保留的字节(终止符还是null或其他)?
推测varchar(0)是无意义的(零容量)?在这种情况下,2 ^ 8的空间应该是256?
是否有其他量级可以提供性能优势?例如,varchar(512)的性能低于varchar(511)或varchar(510)?
对于所有新旧关系数据库,此值是否相同?
免责声明 - 我是开发人员而不是DBA,我使用适合我的业务逻辑的字段大小和类型,但我想知道这种偏好的历史原因,即使它不再相关(甚至是更多,如果它仍然相关).
感谢您的回答,似乎有一些共识认为一个字节用于存储大小,但这并不能在我的脑海中明确解决问题.
如果元数据(字符串长度)存储在相同的连续内存/磁盘中,则有一定意义.1个字节的元数据和255个字节的字符串数据非常适合彼此,并且适合256个连续的存储字节,这可能是整洁的.
但是......如果元数据(字符串长度)与实际字符串数据(可能在主表中)分开存储,那么将字符串数据的长度约束一个字节,只是因为它更容易只存储1个字节的整数元数据似乎有点奇怪.
在这两种情况下,它似乎都是一个微妙的可能取决于数据库的实现.使用255的做法似乎相当普遍,所以某个地方的人必须在一开始就为它辩护一个好的案例,有人能记住那个案例是什么吗?程序员在没有理由的情况下不会采用任何新的做法,这必须是新的一次.
我的问题是tinyblob和tinytext之间真的有什么区别吗?
买我真正的问题是什么原因,如果有的话,我会选择varchar(255)而不是tinyblob或tinytext?
存储字符串时使用的最佳数据类型是什么,如名字?我见过varchar和nvarchar都用了.哪一个更好?有关系吗?
我也听说使用的最佳长度是255,但我不知道为什么.字符串是否有特定的长度?