ホームページ >データベース >mysql チュートリアル >関連テーブル クエリでは、JOIN は常に WHERE 句より高速ですか?
JOIN は WHERE よりも基本的に高速ですか?
リンクされたテーブルからデータを取得する 2 つの類似したクエリを比較する場合、1 つは WHERE 句を使用します。もう 1 つは JOIN を使用する場合、重要なパフォーマンスはあるのかという疑問が生じます。違いは?
データベース スキーマ:
次のデータベース スキーマを考えてみましょう:
CREATE TABLE Document ( Id INT PRIMARY KEY, Name VARCHAR 255 ); CREATE TABLE DocumentStats ( Id INT PRIMARY KEY, DocumentId INT, -- foreign key to table Document NbViews INT );
クエリ比較:
ビューが 500 を超えるドキュメントを取得するには、次のいずれかを使用できます。従来の WHERE 句または JOIN 操作:
-- WHERE clause SELECT * FROM Document, DocumentStats WHERE DocumentStats.Id = Document.Id AND DocumentStats.NbViews > 500; -- JOIN operation SELECT * FROM Document INNER JOIN DocumentStats ON Document.Id = DocumentStats.Id WHERE DocumentStats.NbViews > 500;
理論的等価性:
理論的には、2 つのクエリは同等の結果を生成するはずです。データベース クエリ オプティマイザーは、使用されるクエリ構文に関係なく、実行時間を最小限に抑える最適な実行プランを生成するように設計されています。
ただし、特定のケースでは、一部のデータベース エンジンは、一方のクエリに対して他方のクエリよりも効率的なプランを生成する場合があります。複雑なクエリまたはデータベース構成の場合、両方のアプローチをテストすると、潜在的なパフォーマンス上の利点が明らかになる可能性があります。
したがって、同様のクエリの JOIN 句と WHERE 句は通常同等とみなされますが、ターゲット データベース システムでそれらをテストすることを常にお勧めします。データベース固有の最適化または予期しない動作を特定します。
以上が関連テーブル クエリでは、JOIN は常に WHERE 句より高速ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。