我有一个临时表#Data
,我填充在存储过程中。
它包含15M行。
然后我为临时表IX_Data
的几列创建一个聚集索引,比如#Data
。
然后我从#Data
删除删除类似1M的行(现在总行数为14M)。
我的问题:此时,我应该放弃IX_Data
并重新创建吗?
#Data
仅在一个地方的存储过程的其余部分被进一步引用。
答案 0 :(得分:1)
你不应该。索引由dbms自动维护并始终保持同步。
这就是为什么不建议创建超出您需要的索引的原因,因为它会对每个DML查询造成性能损失。
答案 1 :(得分:0)
您没有指定您所在的数据库(可能是Oracle?),但您的问题似乎是碎片,因为即使您删除了数百万的数据库,也应该在每个数据库中保留数据完整性行(因此无需删除并重新创建索引以确保数据完整性)。
那么,您如何知道您的索引是否碎片化(因此您需要重新创建或更好地重建它)?每个数据库都有他的方法。 Oracle有内部表,您可以从中确定对象是否已碎片化。
但这取决于您的数据库类型。