クエリの実行において、JOIN は WHERE フィルターを上回りますか?
リレーショナル データベースを使用する場合、データのクエリは複数のアプローチで実行できます。これらのオプションのうち、JOIN 句と WHERE 句は、特定の情報を取得するための共通ツールとして機能します。この記事では、特定のシナリオで JOIN 構造を使用すると、WHERE 句よりもパフォーマンス上の利点があるかどうかについて詳しく説明します。
合成例
外部キー関係:
CREATE TABLE Document ( Id INT PRIMARY KEY, Name VARCHAR 255 ) CREATE TABLE DocumentStats ( Id INT PRIMARY KEY, DocumentId INT, -- Foreign key referencing Document.Id NbViews INT )
2 つのクエリアプローチ
ビューが 500 を超えるすべてのドキュメントを取得するには、次の 2 つのクエリが考えられます:
SELECT * FROM Document, DocumentStats WHERE DocumentStats.Id = Document.Id AND DocumentStats.NbViews > 500
SELECT * FROM Document INNER JOIN DocumentStats ON Document.Id = DocumentStats.Id WHERE DocumentStats.NbViews > 500
理論的に同等
理論的には、これらのクエリは同等であり、同じ結果と実行プランが得られるはずです。データベース オプティマイザーは、SQL コマンドを効率的な実行戦略に変換する役割を果たします。これは、特定のデータベース エンジンによって異なる場合があります。
実際の潜在的な違い
クエリは理論的には同等ですが、特定のデータベース エンジンでは動作に微妙な違いが見られる場合があります。両方のアプローチをテストし、実行計画を調査すると、特定のデータベース エンジンの実際のパフォーマンス特性についての洞察が得られます。
以上がJOIN と WHERE: データ取得において JOIN は常に WHERE 句よりも優れていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。