使用varchar
字段作为2的幂与另一个数字相比,效率更高吗?我想不,因为对于SQL Server,默认值是50。
然而,我听说(但从未确认)将大小字段作为2的幂是更有效的,因为它们等同于偶数字节,并且计算机以位为单位进行处理。字节。
那么,声明为varchar(32)
或varchar(64)
的字段是否比varchar(50)
有任何实际好处?
答案 0 :(得分:48)
否强>
在一些其他用途中,使用具有两种尺寸功率的结构有一些优点,主要是因为你可以在另一个两倍大小的结构中安装一个很好的(2的幂)数量。但这不适用于DB字段大小。
与VARCHAR相关的唯一二次幂大小是关于varchar的确切类型(或某些SQL方言中的TEXT / BLOB):如果它小于256,它可以使用单个字节来指示长度。如果它小于65536(64KB),则两个字节就足够了,三个字节最多可达16777216(16MB),四个字节最多可达4294967296(4GB)。
此外,可以认为VARCHAR(50)
与VARCHAR(255)
一样昂贵,因为两者都需要n + 1个字节的存储空间。
当然那是在考虑Unicode之前......
答案 1 :(得分:27)
我一直认为人们选择两个权力来代替varchar领域,因为我们是极客,这就是我们的工作。至少那是我一直以来所做的。
答案 2 :(得分:4)
使用某些最大长度您将看到的唯一实际好处是VARCHAR
所需的存储空间。最大长度超过255将需要一个额外的字节来存储每行中的值的长度(对于256 ^ 2或更大的长度,需要额外的2个字节,依此类推)。
答案 3 :(得分:4)
对于SQL一般?不可以。具体实现,也许。
更高效的不是由规范决定的(SQL只是一个规范),而是它是如何在某个DBMS中实现的。
答案 4 :(得分:0)
这取决于具体的数据库实现,但我不指望它。它通常不会对字符数进行任何计算,因此它不应影响性能 - 仅限空间。