数据量极大的表中,在每日定时更新的过程中,它的索引是否会大大影响更新的效率?
现在我有一个表,有2000多w条记录,我在上面建立了聚集索引。
每天我会定时的对这个表进行更新,绝大部分是insert,很少是update。
此表的索引是否会大大影响更新的效率?
好像有个说法,表在每次更新的时候都会重建索引,那么,如何提高这个重建索引的效率呢?
问题点数:100、回复次数:5Top
1 楼scmail81(琳·风の狼(修罗))回复于 2006-03-05 20:02:14 得分 0
聚集索引会降低insert操作的速度,因为必须要向后移动一半的数据来为新插入的行腾出空间,这种认识是错误的,因为可以利用填充因子控制填充的百分比,从而在索引页上为新插入的数据保留空间.Top
2 楼zjcxc(邹建)回复于 2006-03-05 20:08:16 得分 70
如果建立聚集索引的列的数据基本上都是按顺序新增的, 则索引当然是提高查询效率, 不会影响数据的更新和新增
"表在每次更新的时候都会重建索引"
不是重建索引, 而是根据数据的变化调整索引中键值的顺序, 由于sql建立索引的时候, 会在每个索引页中保留一定的空间, 所以一般来说, 除非索引页中的空闲空间不够, 否则每次数据的调整都会在一个页(8K)内完成, 基本上是不会存在影响效率的问题.Top
3 楼zzyi4u(傲剑飞)回复于 2006-03-05 20:51:00 得分 0
谢谢楼上两位的解答
“因为可以利用填充因子控制填充的百分比,从而在索引页上为新插入的数据保留空间.”
“每次数据的调整都会在一个页(8K)内完成”
8k的空间?
我每次更新的时候,可能要插入上w条数据,8k是不是不够呢?
这个空间的大小是否可以自己设置?Top
4 楼pbsql(风云)回复于 2006-03-06 00:09:20 得分 30
8k的空间是指没页8K,即8060,这是SQL SERVER内部规定的,改不了的,也没必要改
增加的数据都是按索引的顺序新增的话,就不会影响效率。
如:在一列上建了聚集索引,已有记录为:1,3,5,7,9,那么聚集索引的顺序也是1,3,5,7,9,若增加一条记录10,那是不会调整聚集索引及记录顺序的,但若增加一条记录6,就会将聚集索引及记录顺序重新调整。Top
5 楼lsqkeke(可可)回复于 2006-03-06 08:11:57 得分 0
学习 :)Top




