从表中删除行是否会破坏索引?

时间:2018-03-06 12:12:57

标签: sql sql-server

我需要知道,如果我们从具有一些索引的表中删除某些行(我正在讨论sql server)(对于这两种情况都是聚簇的或非聚集的)可以对索引造成任何损害吗?删除行时索引会发生什么?哪一个更适合性能,在处理后从表中删除行,或将它们标记为已处理(当我们需要重复使用它们20倍时)。谢谢你的回答。

2 个答案:

答案 0 :(得分:3)

我不知道你的意思是什么"损害"。从表中删除行时,也需要删除索引条目。这不会造成损害"指数本身。至少,该指数仍然有用。

如果您有大量删除,更新和插入,那么随着时间的推移,索引将被分段。这确实会影响性能。在某些时候,为了性能目的重新构建索引会很有用。您可以在documentation

中了解相关信息

由于少量删除,我不担心重建索引。真正分割索引需要一些工作。

答案 1 :(得分:2)

我的回答是肯定的。 索引是在表中的数据上创建的,简而言之,如果从表中删除数据,则碎片级别会上升。 碎片级别的上升会以多种方式影响数据检索。