可变长度执行时间

当使用任何 CHARACTER VARYING(m,r)、VARCHAR(m,r) 或 NVARCHAR(m,r) 数据类型时,各个表行具有变化的而不是固定的字节数。 当表行具有不断变化的字节数时,数据库操作的速度会受到影响。

由于可以将更多的行放到一个磁盘页中,所以,比各行具有固定字节数相比,数据库服务器可以使用少一些的磁盘操作来搜索表。因此,可以更快速地执行查询。基于同一原因,插入和删除操作的速度也会稍快。

在更新行时,数据库服务器必须执行的工作量取决于新行中的字节数与旧行中的字节数的比较。如果新行使用相同的字节数或更少,那么与定长行相比,执行时间没有显著的不同。然而,如果新行与旧行相比需要多得多的字节数,那么数据库服务器可能必须执行数倍的磁盘操作。因此,更新使用 CHARACTER VARYING(m,r)、VARCHAR(m,r) 或 NVARCHAR(m,r) 数据的表有时会比更新固定长度的字段慢。

要减轻这种效果,请将 r 指定为能够适合于相当大部分的数据项的字节数。于是,大多数行使用保留字节数,填充操作将只浪费少量空间。仅当将使用保留字节数的值替换为使用超出保留字节数的值时,更新速度才会较慢。