普通的Delete命令是否删除这些记录的索引?

时间:2014-05-15 09:28:47

标签: sql sql-server

快速提问我有一张包含170万条记录的表并执行了删除操作,这给我留下了40万条记录,这很好。

我在这张桌子上有几个索引,我只是想知道是否正常

delete * from my_table where value = 1

还可以通过删除因删除记录而不再需要的索引来缩小索引大小吗?

2 个答案:

答案 0 :(得分:1)

数据从删除时的索引中删除,并在Sql Server

中的更新和插入时进行维护

但是,表格和索引统计信息不会自动更新,除非您使用查询影响表格中的足够多的行。
该阈值是我默认调用20%的表,因此如果您的删除影响较小,那么自己更新统计信息可能是值得的。

这通常是由于统计数据是索引使用的一部分(引擎使用统计信息来计算何时使用各种索引)而且可能是旧的'即使实际数据已从物理索引中删除。

答案 1 :(得分:0)

从技术上讲,索引应该保持自己,但数据库将拥有自己的方式。

MySQL自动完成,但Postgres有时需要手动运行真空命令。不确定其他数据库。