ホームページ > データベース > mysql チュートリアル > JOIN 句と WHERE 句のフィルタリング: どちらの SQL アプローチがより優れたパフォーマンスを提供しますか?

JOIN 句と WHERE 句のフィルタリング: どちらの SQL アプローチがより優れたパフォーマンスを提供しますか?

Linda Hamilton
リリース: 2025-01-03 07:10:39
オリジナル
182 人が閲覧しました

JOIN vs. WHERE Clause Filtering: Which SQL Approach Offers Better Performance?

フィルタのパフォーマンス: 結合基準と WHERE 句

SQL クエリを実行する場合、結合基準と WHERE 句の両方を使用してデータをフィルタリングするのが一般的です。 WHERE句。ただし、どちらのアプローチの方がパフォーマンスが優れているのかという疑問が生じます。

次の 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
ログイン後にコピー

多くの人は、結果セットを早く減らすため、結合基準 (クエリ 1) でフィルタリングする方が高速であると直感的に考えています。しかし、経験的テストにより、驚くべき結果が明らかになりました。

パフォーマンス結果

各テーブルの 1000 レコードのデータセットを使用してテストを実行した後の結果は、クエリ 2 (フィルタリング) を示しました。 WHERE 句上) は実際にはわずかでしたより高速:

Filter Technique Elapsed Time (ms)
Join Criteria (Query 1) 143256
WHERE Clause (Query 2) 143016

論理的考慮事項

2 つのアプローチのパフォーマンスは近いですが、フィルタリングに WHERE 句を使用することを支持する論理的な議論があります:

  • INNER JOIN を LEFT JOIN に置き換えると、結合基準のフィルターは次のようになります。論理的に意味がなくなりました。
  • WHERE 句を使用すると、使用される結合タイプに関係なく、フィルターが結果セット内のすべての行に適用されます。

結論

どちらのフィルタリング手法も同様に実行されますが、WHERE 句でフィルタを適用する方がわずかに速く、より多くの効果が得られます。論理的に一貫している。この手法により、同じパフォーマンスが得られ、クエリの明確さが保証されます。

以上がJOIN 句と WHERE 句のフィルタリング: どちらの SQL アプローチがより優れたパフォーマンスを提供しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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