理論的には、はよりも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追加の並べ替えが必要になる場合がありますが、本当に必要ですか?重複している場合は、設計上の問題を示唆している可能性があります...