使用T-SQL高效删除记录,而不使用IN子句
使用T-SQL高效删除记录,而不使用IN子句
有没有一种高效的方法在以下场景中从SQL Server中删除记录,而不使用关键字IN
:
-- If Documents were deleted, remove them from your ocean DELETE FROM IndexHistory WHERE DocId IN (SELECT IH.Docid FROM IndexHistory IH LEFT JOIN IndexedLineItems I ON IH.Docid = I.DocId WHERE I.Docid IS NULL)
如果您研究这种情况,您将在括号内找到要从查询中删除的所有记录。
已经有证实了使用“IN”是低效的事实。因此,我们应该认为,在不使用“IN”的情况下删除它们是有可能的,因为可以使用“IN”之外的方式进行识别。
例如,我认为可能会出现这样的情况,但我没有正确的语法:
DELETE FROM IndexHistory IH LEFT JOIN IndexedLineItems I ON IH.Docid = I.DocId WHERE I.Docid IS NULL
我意识到答案可能仍然是“不可能”。
如果不可能,也许可以建议Microsoft改进语言。在我这样做之前,我想在这里发布以查看是否遗漏了什么。
admin 更改状态以发布 2023年5月20日