行の特定の識別子が他の2つのテーブルのいずれにも存在しない行のみを挿入する必要があるinsert-selectステートメントがあります。次のうちどれが速いでしょうか?
INSERT INTO Table1 (...)
SELECT (...) FROM Table2 t2
WHERE ...
AND NOT EXISTS (SELECT 'Y' from Table3 t3 where t2.SomeFK = t3.RefToSameFK)
AND NOT EXISTS (SELECT 'Y' from Table4 t4 where t2.SomeFK = t4.RefToSameFK AND ...)
... また...
INSERT INTO Table1 (...)
SELECT (...) FROM Table2 t2
WHERE ...
AND t2.SomeFK NOT IN (SELECT RefToSameFK from Table3)
AND t2.SomeFK NOT IN (SELECT RefToSameFK from Table4 WHERE ...)
...または彼らはほぼ同じように機能しますか?さらに、このクエリを構造化するために望ましい方法は他にありますか?サブクエリは、多項式係数によって実行時間を増やすクエリに別の「ディメンション」を追加するため、一般的に嫌いです。