我正在对除日期以外的字段的索引的表执行一些基于日期的大型删除查询。我被告知删除这些索引,执行删除,然后重新构建索引可能比仅对索引表运行删除更快。是这种情况吗?
我可以看到为什么在没有索引的情况下实际删除记录会更快,但我觉得以后必须重建它的行为会否定所获得的任何速度优势。
答案 0 :(得分:1)
在决定首先删除索引时,必须将删除期间维护索引的成本(或时间)与删除后重新创建索引的成本进行比较。两个影响最大的因素是表中的行数以及要删除的数量或行数。
当行数很小或要删除的行数很小时,首先删除索引不会有好处。但是,如果您有一个大表并且要删除许多行,则更新索引的成本会增加,直到您达到维护索引的成本高于删除和重新创建索引的成本。
由于您表明您正在进行多次大型删除,我的预感是您有一种情况,即删除和重新创建索引会有所帮助。
答案 1 :(得分:0)
如果您的索引填充因子不佳,那么我确信它会。