4

我们有一个表T,其中包含几char(8)列(隐式),在某些情况下需要将其更改为类似char(64).

我们不想浪费空间,所以这里有一个问题:从 RDBMS 计算的角度来看,这是否是一项昂贵的操作(扩展列数据类型)?我们希望从理论上回答这个问题,没有基准。数据库是否需要因此重新排列表的物理布局?

4

2 回答 2

4

是的,相当昂贵——该表中的每一行都必须再次被触及、修改、存储,并且使用这些列中的任何一个的所有非聚集索引都需要重建。

因为它是CHAR(x),所以它是固定宽度的——所以改变它的大小会导致每一列都必须被修改。另外:从 8 个字符更改为 64 个字符后,某些页面可能无法再容纳所有行,并且会发生页面拆分及其所有开销。

于 2012-06-12T12:05:02.643 回答
2

如果增加 char 数据类型的长度,则需要进行数据页拆分,并且在 CPU 使用率和内存优化以及数据压缩方面代价高昂。

于 2012-06-12T12:03:01.177 回答