これとこの質問に関連するSQLの質問があります(ただし異なります)。基本的に、ネストされたクエリを回避する方法を知りたいです。
jobs
ある会社がその歴史の中で実行した膨大な数の仕事()があるとしましょう。これらのジョブは、年、月、場所、およびジョブに使用されるツールに属するコードによって特徴付けられます。さらに、ツールの表(tools
)があり、ツールコードをツールの説明とツールに関する詳細データに変換しています。今、彼らはドロップダウンボックスを使用して年、月、場所、ツールを選択できるWebサイトを望んでいます。その後、一致するジョブが表示されます。最後のドロップダウンに、前に選択した年、月、場所に一致する関連ツールのみを入力したいので、次のネストされたクエリを記述します。
SELECT c.tool_code, t.tool_description
FROM (
SELECT DISTINCT j.tool_code
FROM jobs AS j
WHERE j.year = ....
AND j.month = ....
AND j.location = ....
) AS c
LEFT JOIN tools as t
ON c.tool_code = t.tool_code
ORDER BY c.tool_code ASC
完全なデータベースでJOINを実行してそこから選択するよりもはるかに高速だったため、このネストされたクエリに頼りました。クエリ時間が大幅に短縮されました。しかし、最近、MySQLのネストされたクエリは絶対に避けるべきだと読んだので、このアプローチが間違っているのではないかと思います。クエリを別の方法で書き直す必要がありますか?そしてどうやって?