正常删除:
DELETE
FROM Table
WHERE column1 = 'some value'
删除索引:
DELETE Table1
FROM Table1 WITH(INDEX(PK_Table1))
WHERE column1 = 'some value'
我知道当你从表中删除一行时,它会搜索所有的引用表,这会减慢删除执行的速度。
如何使用WITH INDEX进行删除?
答案 0 :(得分:2)
WITH(INDEX(PK_Table1))
是一个索引提示;即告诉SQL使用特定索引而不是尝试确定最佳索引。通常不需要索引提示; SQL非常擅长知道什么是最好的;并且没有花费太多时间来计算最佳索引,因为它回忆起上次使用哪个索引时有类似的查询。
在某些情况下,SQL可能会出错;对于那些你可以通过添加提示来提高性能的人。这些案件非常罕见。在这种情况下,要彻底测试,并尽可能接近真实世界的数据(因为表中的数据会影响查询在每个索引下的执行情况
除非您发现真正的性能问题,否则可以证明你的提示有帮助,不要使用提示。
这里有关于提示的相关帖子,它很好地总结了这个论点:https://www.brentozar.com/archive/2013/10/index-hints-helpful-or-harmful/