1

次の形式のクエリがあるとします。

SELECT a, b, c, d 
FROM table1 
WHERE a IN (
  SELECT x 
  FROM table2 
  WHERE some_condition);

現在、 のクエリはIN膨大な数のレコードを返すことができます。それが主キーであると仮定するとa、インデックスが使用されるため、これはそのようなクエリを作成するための最良の方法ですか?

それとも、サブクエリによって返された各レコードをループする方が最適ですか?

私にとってはwhere a = X、インデックス (ツリー) トラバーサルを行うだけであることは明らかです。
しかし、IN(特に巨大なデータセットに対して)インデックスをどのようにトラバース/利用するかはわかりません。

4

2 に答える 2