次の形式のクエリがあるとします。
SELECT a, b, c, d
FROM table1
WHERE a IN (
SELECT x
FROM table2
WHERE some_condition);
現在、 のクエリはIN
膨大な数のレコードを返すことができます。それが主キーであると仮定するとa
、インデックスが使用されるため、これはそのようなクエリを作成するための最良の方法ですか?
それとも、サブクエリによって返された各レコードをループする方が最適ですか?
私にとってはwhere a = X
、インデックス (ツリー) トラバーサルを行うだけであることは明らかです。
しかし、IN
(特に巨大なデータセットに対して)インデックスをどのようにトラバース/利用するかはわかりません。