結合クエリとサブクエリ 質問する

結合クエリとサブクエリ 質問する

私は昔ながらの MySQL ユーザーで、常にJOINサブクエリを好んできました。しかし、最近は誰もがサブクエリを使用しており、私はそれが嫌いです。理由はわかりません。

違いがあるかどうかを自分で判断するための理論的な知識が不足しています。サブクエリは と同じくらい優れているJOINため、心配する必要はありませんか?

ベストアンサー1

サブクエリは、「B のファクトを条件として A からファクトを取得する」という形式の問題を解決する論理的に正しい方法です。このような場合、結合を行うよりもサブクエリに B を挿入する方が論理的に理にかなっています。また、B との複数の一致により A から重複したファクトを取得することについて注意する必要がないため、実用的な意味でもより安全です。

しかし、実際には、答えは通常、パフォーマンスに帰着します。一部のオプティマイザーは、結合とサブクエリを比較すると不利な結果になり、一部のオプティマイザーは逆に不利な結果になります。これはオプティマイザー固有、DBMS バージョン固有、およびクエリ固有です。

歴史的には、明示的な結合が通常は勝つため、結合の方が優れているという定説がありますが、オプティマイザーは常に改善されているため、まず論理的に一貫した方法でクエリを記述し、パフォーマンスの制約によりこれが正当化される場合は再構築することを好みます。

おすすめ記事