在SQL Server中将char(8)更改为char(32)

4
我们有一个包含几个char(8)列的表格T(隐式),在某些条件下需要将其更改为类似char(64)的东西。
我们不想浪费空间,所以问题是: 从RDBMS计算的角度来看,这是否是一项昂贵的操作(扩展列数据类型)?我们希望在理论上回答这个问题,不需要进行基准测试。数据库是否需要重新排列表的物理布局?
2个回答

4

是的,相当昂贵 - 必须触及该表中的每一行,进行修改,再次存储,并且使用其中任何列的所有非聚集索引都需要重新构建。

由于它是CHAR(x),因此更改其大小会导致必须修改每一列。此外:从8到64个字符的更改可能会导致某些页面无法再容纳所有行,进而出现页面分裂及其所有开销。


谢谢,我们已经假定了这一点。 - Cartesius00

2

如果您增加char数据类型的长度,则需要进行数据页面拆分,这将在CPU利用率、内存优化和数据压缩方面代价高昂。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接