ホームページ > データベース > mysql チュートリアル > JOIN と WHERE: 複数テーブルのクエリではどちらが速いですか?

JOIN と WHERE: 複数テーブルのクエリではどちらが速いですか?

Patricia Arquette
リリース: 2025-01-03 02:21:38
オリジナル
201 人が閲覧しました

JOIN vs. WHERE: Which is Faster for Multi-Table Queries?

クエリ パフォーマンスを最適化するための JOIN と WHERE

データベース内の複数のテーブルからデータを取得する場合、JOIN または WHERE を使用するのが一般的です。 WHERE 句を使用してそれらの間の関係を確立します。この記事では、ある方法が他の方法よりも本質的に高速であるかどうかについての議論を詳しく掘り下げます。

質問:

ドキュメントとそれに関連する統計を表す次のデータベース テーブルについて考えてみましょう。 :

CREATE TABLE Document (
  Id INT PRIMARY KEY,
  Name VARCHAR 255
)

CREATE TABLE DocumentStats (
  Id INT PRIMARY KEY,
  DocumentId INT, -- this is a foreign key to table Document
  NbViews INT
)
ログイン後にコピー

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 Server など、一部のデータベース エンジンでは、特定の条件下でパフォーマンスに違いが生じる場合があります。提供された例では、テーブル サイズが比較的大きい場合は、2 つのテーブル間のデカルト積の必要性を回避できるため、JOIN の方が適している可能性があります。

一方、明示的な等価性を持つ WHERE 句DocumentStats.DocumentId 列に一意のインデックスがある場合、条件のパフォーマンスが向上する可能性があります。

追加考慮事項:

最適な実行計画を決定するために、使用されている実際のデータベース システムで両方のクエリ オプションをテストすることを常にお勧めします。異なるデータベース エンジンとクエリ オプティマイザーは、さまざまなシナリオで異なる動作をする可能性があります。

さらに、WHERE ではなく JOIN を選択することは、データの選択性、テーブル構造、クエリ内の追加条件の存在などの要因によって影響を受ける可能性があります。 .

以上がJOIN と WHERE: 複数テーブルのクエリではどちらが速いですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート