我正在尝试优化一些存储过程,它们非常频繁地使用 EXISTS、ANY 或 IN,我想知道在哪种特定情况下最好是 IN、Exists 或 ANY 的区别。
我使用 IN、EXISTS 和 ANY 创建了三个查询并检查了它们的执行周期,但所有三个查询的执行周期都是相同的。我很困惑为什么会出现相同的情况,执行周期如何不同,或者在哪些情况下可能会有所不同。以下是我尝试过的三个查询和它们的执行周期。谁能给我一个如何改变执行周期的例子,请分享任何场景或查询。
使用 EXISTS 查询
子查询中还有一个问题,需要指定 * 或列吗?
SELECT * FROM RecastEvents AS re
WHERE EXISTS (Select * FROM Metadata
WHERE EventId = 2145984 AND EventId = re.CCId)
使用 IN 查询
SELECT * FROM RecastEvents as re
WHERE re.CCID IN (SELECT EventId FROM Metadata
WHERE EventId = 2145984)
使用 ANY 查询
SELECT * FROM RecastEvents AS re
WHERE re.CCID = ANY (SELECT EventId FROM Metadata
WHERE EventId = 2145984)