理論的には、はよりもNOT EXISTS
わずかに最適化する必要があり、がNULLNOT IN
可能である場合はより信頼性が高いはずです( SQL Serverの観点からの詳細)。私はMySQLについて十分に知らないので、このクエリがより良いかどうかを知ることができないと告白します。anotherid
SELECT somecolumn
FROM dbo.sometable AS s
WHERE something = somethingelse
AND NOT EXISTS
(
SELECT 1 FROM dbo.[another table]
WHERE anotherid = s.someid
);
しかし、ここでの実際のパフォーマンスの問題は、サブクエリの存在ではなく、インデックスの欠如であると思われます。sometable.something
インデックスが付けられていますか?どうsometable.somied
ですか?そして[another table].anotherid
?また、DISTINCT
追加の並べ替えが必要になる場合がありますが、本当に必要ですか?重複している場合は、設計上の問題を示唆している可能性があります...