使用2的幂次方作为varchar
字段大小是否比其他数字更有效?我认为不是,因为对于SQL Server,默认值为50。
但是,我听说(但从未确认过)将字段大小定义为2的幂次方更有效,因为它们等同于偶数字节,计算机以位和字节为单位进行处理。
那么,声明为varchar(32)
或varchar(64)
的字段是否比varchar(50)
有任何实际好处?
使用2的幂次方作为varchar
字段大小是否比其他数字更有效?我认为不是,因为对于SQL Server,默认值为50。
但是,我听说(但从未确认过)将字段大小定义为2的幂次方更有效,因为它们等同于偶数字节,计算机以位和字节为单位进行处理。
那么,声明为varchar(32)
或varchar(64)
的字段是否比varchar(50)
有任何实际好处?
在某些其他用途中,使用大小为2的幂结构有一些优势,主要因为您可以将一个2的幂结构的数量放入另一个2的幂结构中。但这并不适用于DB字段大小。
与VARCHAR相关的唯一2的幂次是关于varchar(或一些SQL方言中的TEXT/BLOB)的确切类型:如果小于256,则可以使用单个字节指示长度。如果小于65536(64KB),两个字节就足够了,三个字节可达到16777216(16MB),四个字节可达到4294967296(4GB)。
此外,可以认为VARCHAR(50)
和VARCHAR(255)
一样昂贵,因为两者都需要n + 1字节的存储空间。
当然在考虑Unicode之前...
我一直认为人们选择2的幂作为varchar字段的长度是因为我们都是极客,这就是我们所做的。至少这是我一直以来的做法。
对于SQL的一般情况来说,不是的。但对于特定的实现方式,可能会有所不同。
什么更有效率并不由规范决定(SQL只是一种规范),而是由某个数据库管理系统中它的实现方式决定的。
使用某些最大长度只会带来实际的一个好处,那就是VARCHAR
所需的存储空间。如果最大长度超过255,每行记录中存储该值的长度需要额外的1个字节(对于256^2或更高长度的数据,需要额外的2个字节以此类推)。
这取决于具体的数据库实现,但我不认为会影响性能。通常情况下,它不会对字符数量执行任何计算,因此它不应该影响性能,只会占用空间。