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