【发布时间】:2010-10-15 15:44:05
【问题描述】:
我正在对具有除日期以外的字段的索引的表执行一些大型的基于日期的删除查询。我被告知删除这些索引,执行删除,然后重新构建索引可能比仅对索引表运行删除更快。是这样吗?
我明白为什么在没有索引的情况下实际删除记录会更快,但我觉得以后必须重建它的行为会抵消所获得的任何速度优势。
【问题讨论】:
标签: sql-server-2008 indexing sql-delete
我正在对具有除日期以外的字段的索引的表执行一些大型的基于日期的删除查询。我被告知删除这些索引,执行删除,然后重新构建索引可能比仅对索引表运行删除更快。是这样吗?
我明白为什么在没有索引的情况下实际删除记录会更快,但我觉得以后必须重建它的行为会抵消所获得的任何速度优势。
【问题讨论】:
标签: sql-server-2008 indexing sql-delete
在决定首先删除索引时,您必须将删除期间维护索引的成本(或时间)与删除后重新创建索引的成本进行比较。两个最有影响的因素是表中的行数和被删除的行数。
当行数较少或要删除的行数较少时,首先删除索引不会对您有利。但是,如果您有一个大表和许多要删除的行,则更新索引的成本会增加,直到您达到维护索引的成本高于删除和重新创建索引的程度。
由于您表示要进行多次大型删除,我的直觉是您遇到的情况是删除和重新创建索引会有所帮助。
【讨论】:
如果您的索引的填充因子很差,那么我相信它会。
【讨论】: