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/