2014-12-02 40 views
0

我有一个临时表#Data,我填充在存储过程中。SQL指数 - 重现删除后

它包含像15M行。

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

然后我从#Data它删除像1M行删除(保持总排14M现在)。

我的问题:在这一点上,我应该放下IX_Data和重建呢?

#Data正在只是在一个位置中所存储的程序的其余部分进一步称作。

+2

这个问题的动机是什么?你为什么要问? – 2014-12-02 21:11:13

+0

既然你提到*聚簇索引*,我认为这是'sql-server' - 正确的? ** SQL **只是查询语言 - 而不是数据库产品 - 所以这实在不足以帮助您。请始终告诉我们具体数据库**('sql-server','oracle','mysql','postgresql'等)以及您使用的是哪个版本/版本! – 2014-12-02 21:21:02

+0

对不起,忘了提。我使用SQL Server 2014 – GreenBinary 2014-12-02 21:33:58

回答

1

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

这就是为什么它不建议比你需要的,因为它是每个DML查询的性能损失,以创造更多的索引。

0

不指定你是哪个数据库(也许是甲骨文?),但你的问题似乎即将碎片,因为数据的完整性应在每个数据库编程和维持,即使你删除行的一百万(所以有无需为数据完整性删除并重新创建索引)。

那么,你如何知道你的索引是否是零散的(所以你需要重新创建,或者更好,重建呢)?每个数据库都有他的方法。 Oracle具有内部表,您可以从中确定对象是否分段。

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

+0

我正在使用SQL Server 2014.看起来我可以从我的proc中删除drop并创建索引语句。 – GreenBinary 2014-12-02 21:36:19