varchar字段 – 是两个更有效率的权力?
使用大小为2的幂与另一个数的varchar
字段效率更高吗? 我想不,因为对于SQL Server,默认值是50。
然而,我听说(但从来没有证实),大小字段作为2的幂是更有效的,因为它们等于偶数字节,计算机处理位和字节。
那么,声明为varchar(32)
或varchar(64)
的字段是否比varchar(50)
有任何真正的好处?
没有。
在其他一些用途中,使用两个尺寸的结构有一些优点,主要是因为你可以在另一个两个尺寸的结构内安装一个很好的(两个幂的)数量的结构。 但是这不适用于数据库字段大小。
与VARCHAR相关的唯一的“两次幂”是关于varchar(或某些SQL方言中的TEXT / BLOB)的确切types:如果小于256,则可以使用单个字节来指示长度。 如果小于65536(64KB),两个字节就够了,三个字节到16777216(16MB),四个字节到4294967296(4GB)。
另外,可以认为VARCHAR(50)
与VARCHAR(255)
一样昂贵,因为两者都需要n + 1个字节的存储空间。
当然这是在考虑Unicode之前…
我一直认为人们为varchar领域select两个幂,因为我们是极客,这就是我们所做的。 至less我一直这样做。
对于一般的SQL? 不,对于具体的实施,也许。
更高效的不是由规范决定的(SQL只是一个规范),而是如何在某个DBMS中实现。
使用某些最大长度将会看到的唯一实际益处是VARCHAR
所需的存储空间。 最大长度超过255将需要一个额外的字节来存储每行的值的长度(额外的2个字节的长度为256 ^ 2或更大,等等)。
这取决于具体的数据库实现,但我不希望它。 它通常不会对字符数进行任何计算,所以它不应该影响性能空间。