SQL索引 - 在DELETE之后重新创建

时间:2014-12-02 21:04:39

标签: sql sql-server sql-server-2014

我有一个临时表#Data,我填充在存储过程中。

它包含15M行。

然后我为临时表IX_Data的几列创建一个聚集索引,比如#Data

然后我从#Data删除删除类似1M的行(现在总行数为14M)。

我的问题:此时,我应该放弃IX_Data并重新创建吗?

#Data仅在一个地方的存储过程的其余部分被进一步引用。

2 个答案:

答案 0 :(得分:1)

你不应该。索引由dbms自动维护并始终保持同步。

这就是为什么不建议创建超出您需要的索引的原因,因为它会对每个DML查询造成性能损失。

答案 1 :(得分:0)

您没有指定您所在的数据库(可能是Oracle?),但您的问题似乎是碎片,因为即使您删除了数百万的数据库,也应该在每个数据库中保留数据完整性行(因此无需删除并重新创建索引以确保数据完整性)。

那么,您如何知道您的索引是否碎片化(因此您需要重新创建或更好地重建它)?每个数据库都有他的方法。 Oracle有内部表,您可以从中确定对象是否已碎片化。

但这取决于您的数据库类型。