varchar字段 - 两个效率更高的功能?

时间:2009-02-27 03:06:34

标签: database-design varchar

使用varchar字段作为2的幂与另一个数字相比,效率更高吗?我想不,因为对于SQL Server,默认值是50。

然而,我听说(但从未确认)将大小字段作为2的幂是更有效的,因为它们等同于偶数字节,并且计算机以位为单位进行处理。字节。

那么,声明为varchar(32)varchar(64)的字段是否比varchar(50)有任何实际好处?

5 个答案:

答案 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)

这取决于具体的数据库实现,但我不指望它。它通常不会对字符数进行任何计算,因此它不应影响性能 - 仅限空间。