ホームページ > データベース > mysql チュートリアル > フィルタリングの JOIN 句と WHERE 句: どちらの SQL クエリが速いですか?

フィルタリングの JOIN 句と WHERE 句: どちらの SQL クエリが速いですか?

Susan Sarandon
リリース: 2024-12-28 19:55:14
オリジナル
780 人が閲覧しました

JOIN vs. WHERE Clause for Filtering: Which SQL Query is Faster?

SQL クエリのフィルタ基準: Join 句と Where 句

SQL でデータをクエリする場合、フィルタ基準を適用するには 2 つの一般的な方法があります。 : 結合基準と Where 句。開発者は、どちらのアプローチがより効率的であるかという問題によく悩まされます。

質問:

どちらの SQL クエリがより高速に実行されるか: 結合基準にフィルターを適用するものと、どこで句?

分析:

2 つのクエリを検討します:

クエリ 1 (結合基準のフィルター):

SELECT *
FROM TableA a
INNER JOIN TableXRef x ON a.ID = x.TableAID
INNER JOIN TableB b ON x.TableBID = b.ID
WHERE a.ID = 1;
ログイン後にコピー

クエリ 2 (Where 句のフィルタ):

SELECT *
FROM TableA a
INNER JOIN TableXRef x ON a.ID = x.TableAID AND a.ID = 1
INNER JOIN TableB b ON x.TableBID = b.ID;
ログイン後にコピー

パフォーマンスの比較:

経験的に、Where 句が結合基準よりもわずかに高速であることがテストで明らかになりました。結合基準によって結果セットがすぐに削減されると予想されるため、これは直観に反します。

論理的一貫性:

パフォーマンスとは別に、各アプローチの論理的一貫性を考慮してください。 Where 句を使用すると、結合が左結合に置き換えられた場合でも操作が有効なままになります。

推奨アプローチ:

パフォーマンスと論理的一貫性に基づいて、一般に、Where にフィルター基準を適用することをお勧めします。 Clause.

例:

次のクエリを考えてみましょう:

SELECT *
FROM TableA a
LEFT JOIN TableXRef x ON x.TableAID = a.ID AND a.ID = 1
LEFT JOIN TableB b ON x.TableBID = b.ID;
ログイン後にコピー

このクエリは論理的に適切であり、以下の同等のクエリと同様に実行されます。結合のフィルターCriteria.

結論:

結合基準と Where 句はパフォーマンスの観点からは同様に機能しますが、Wh​​ere 句は論理的により一貫性があるため、適用する場合に推奨されるアプローチです。 SQL クエリのフィルター条件。

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

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