删除'WITH INDEX' SQL 查询



Normal DELETE :

DELETE 
FROM Table
WHERE   column1 =   'some value'

使用索引删除:

DELETE  Table1
FROM    Table1  WITH(INDEX(PK_Table1))
WHERE   column1 =   'some value'

我知道当您从表中删除一行时,它将搜索所有引用表,这会减慢删除执行速度。

使用 WITH INDEX 删除如何工作?

WITH(INDEX(PK_Table1))是一个

索引提示;即告诉SQL使用特定的索引,而不是试图确定最好的索引。 通常不需要索引提示;SQL非常善于知道什么是最好的;并且不需要花费太多时间计算出最佳索引,因为它会回忆上次进行类似查询时使用的索引。

在某些情况下,SQL可能会出错;对于那些可以通过添加提示来提高性能。 这些病例非常罕见。 在这种情况下,请进行彻底测试,并使用尽可能接近真实世界的数据(因为表中的数据将影响查询在每个索引下的性能)

除非你看到一个真正的性能问题,并且可以证明你的提示有帮助,否则不要使用提示。

这里有一篇关于提示的相关文章,它很好地总结了这个论点: https://www.brentozar.com/archive/2013/10/index-hints-helpful-or-harmful/

最新更新