私はいくつかのストアド プロシージャを最適化しようとしていますが、それらは非常に頻繁に EXISTS、ANY、または IN を使用しており、IN、Exists、または ANY のいずれが最適な特定のシナリオの違いを知りたいと考えています。
IN、EXISTS、ANY を使用して 3 つのクエリを作成し、それらの実行サイクルを確認しましたが、3 つのクエリの実行サイクルはすべて同じです。なぜ同じになるのか、実行サイクルがどのように異なるのか、または異なる可能性があるシナリオは何なのか、私は混乱しています。以下は、私が試した3つのクエリとそれらの実行サイクルです。実行サイクルを変更する方法の例を教えてください。シナリオまたはクエリを共有してください。
EXISTS を使用したクエリ
サブクエリでもう 1 つ質問があります。* または列を指定する必要があるのは何ですか?
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)