61

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

但是,我听说(但从未证实)将字段大小设置为 2 的幂更有效,因为它们等同于偶数字节,并且计算机以位和字节进行处理。

那么,一个字段声明为varchar(32)varchar(64)有任何真正的好处varchar(50)吗?

4

5 回答 5

60

不。

在其他一些用途中,使用具有 2 次方大小的结构有一些优势,主要是因为您可以在另一个 2 次方大小的结构中安装一个很好的(2 的幂)数量的结构。但这不适用于数据库字段大小。

与 VARCHAR 相关的唯一大小的二次幂是关于 varchar(或某些 SQL 方言中的 TEXT/BLOB)的确切类型:如果它小于 256,它可以使用单个字节来指示长度。如果小于 65536(64KB),两个字节就够了,三个字节到 16777216(16MB),四个字节到 4294967296(4GB)。

此外,可以说它VARCHAR(50)和 一样昂贵VARCHAR(255),因为两者都需要 n+1 字节的存储空间。

当然,这是在考虑 Unicode 之前......

于 2009-02-27T03:37:39.350 回答
34

我一直认为人们为 varchar 字段选择 2 的幂是因为我们是极客,这就是我们所做的。至少我一直都是这样做的。

于 2009-02-27T03:09:23.430 回答
5

对于一般的 SQL?不,对于特定的实现,也许。

什么更高效不是由规范决定的(SQL只是一个规范),而是在某个DBMS中是如何实现的。

于 2009-02-27T03:13:50.703 回答
4

使用某些最大长度您将看到的唯一切实好处是VARCHAR. 超过 255 的最大长度将需要一个额外的字节来存储每行中值的长度(对于 256^2 或更大的长度,还需要额外的 2 个字节,依此类推)。

于 2009-02-27T03:12:36.057 回答
0

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

于 2009-02-27T03:12:14.170 回答