为什么在插入> 150,000条记录后我必须在表上重建索引?

时间:2014-07-28 19:31:17

标签: sql sql-server tsql indexing

我有一个日常流程,它将大约150,000条记录导入两个表中,然后加入它们以与其他数据进行比较。

我在表上创建了索引,这使得比较过程非常快。不幸的是,在导入过程之后,我的索引上的碎片会突然上升,通常超过50%。然后我必须重建索引才能运行比较查询。

这对我没有意义。插入数据时索引不应该自动更新吗?索引上是否存在会影响此行为的属性?

修改 一些额外的信息 - 我有两张桌子。在导入过程中,一个表通过insert / select语句添加了大约150,000行。另一个表在应用程序级别从SQLBulkCopy获取150,000行。

1 个答案:

答案 0 :(得分:1)

但索引正在自行更新 除非您按索引的顺序完全添加数据,否则索引将分段。

要考虑的一件事:

  • 您能否按索引的顺序插入数据?
    这将减少碎片。
  • 考虑删除索引,插入数据,然后重建索引 如果你得到50%的碎片,那么这很可能会更快。 碎片索引会减慢插入速度。
  • 如果您必须将索引保持为热,请考虑填充系数为50% 这将显着降低插入碎片的速度。