我需要知道,如果我们从具有一些索引的表中删除某些行(我正在讨论sql server)(对于这两种情况都是聚簇的或非聚集的)可以对索引造成任何损害吗?删除行时索引会发生什么?哪一个更适合性能,在处理后从表中删除行,或将它们标记为已处理(当我们需要重复使用它们20倍时)。谢谢你的回答。
答案 0 :(得分:3)
我不知道你的意思是什么"损害"。从表中删除行时,也需要删除索引条目。这不会造成损害"指数本身。至少,该指数仍然有用。
如果您有大量删除,更新和插入,那么随着时间的推移,索引将被分段。这确实会影响性能。在某些时候,为了性能目的重新构建索引会很有用。您可以在documentation。
中了解相关信息由于少量删除,我不担心重建索引。真正分割索引需要一些工作。
答案 1 :(得分:2)
我的回答是肯定的。 索引是在表中的数据上创建的,简而言之,如果从表中删除数据,则碎片级别会上升。 碎片级别的上升会以多种方式影响数据检索。