我使用 MSSQL Server 2008,我有简单条件的 SQL 请求,它定期从表中删除旧记录(表中约 3 百万条记录)。
即使它影响 0 行,该请求也会执行大量时间(约 10 秒)。
该表有一些索引,在实际执行计划中我看到“索引删除”操作消耗了所有执行时间。
如果没有任何行受删除操作影响,为什么 SQL Server 会在索引上做很多工作?
更新:
要求:
delete t
from Entity t
where t.Revision <= x
AND exists (
select 1
from Entity tt
where tt.Id=t.Id
and tt.Revision > t.Revision
)
实际执行计划 XML:pastebin.com/up2E3iP1