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

问题描述 投票:0回答:2

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

sql sql-server
2个回答
3
投票

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

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

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


2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.