最初のINNER JOIN
としましょう table1
の1,000,000行の75%を返します 。 2番目のクエリは、他の250,000行を返しません。代わりに、デカルト積を作成し、750,000行の一致する行を削除しようとします。したがって、6,000,000×1,000,000〜750,000行を返そうとしています。これは、膨らんだ6×10行の結果セットです。
あなたはおそらくこれが欲しいでしょう:
SELECT * FROM table1
LEFT JOIN table2 ON table2.number = table1.number
WHERE table2.number IS NULL
これにより、table1
の行が返されます table2
には存在しません 。
FULL OUTER JOIN
にも興味があるかもしれません :
SELECT * FROM table1
FULL OUTER JOIN table2 ON table2.number = table1.number
WHERE table1.number IS NULL AND table2.number IS NULL
これにより、両方のテーブルで、他のテーブルと一致しない行が返されます。