ホームページ > データベース > mysql チュートリアル > MySQL の Where 句の結合: ON と WHERE – どちらが効率的ですか?

MySQL の Where 句の結合: ON と WHERE – どちらが効率的ですか?

Patricia Arquette
リリース: 2024-12-09 15:54:12
オリジナル
468 人が閲覧しました

Where Clause in MySQL Joins:  ON vs. WHERE – Which is More Efficient?

Where 句を使用した MySQL 結合の最適化

MySQL では、さまざまなタイプの結合を使用して 2 つのテーブルを結合できます。左結合を実行し、一方または両方のテーブルの列に基づいて条件を適用する場合、条件の配置がクエリの効率と結果に影響を与える可能性があります。

次のシナリオを検討してください。

  • カテゴリと user_category_subscriptions の 2 つのテーブルがあり、すべてのカテゴリと特定のユーザーが購読しているカテゴリを取得したいと考えています。 user.
  • category_id 列は両方のテーブルのキーであり、user_id は user_category_subscriptions テーブルに存在します。

次のクエリにより、目的の結果が得られます:

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions
ON user_category_subscriptions.category_id = categories.category_id AND user_category_subscriptions.user_id = 1;
ログイン後にコピー

ただし、結合内で AND 句の代わりに WHERE 句を使用すると、効率:

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions
ON user_category_subscriptions.category_id = categories.category_id
WHERE user_category_subscriptions.user_id = 1;
ログイン後にコピー

外部結合では、結合句または WHERE 句に条件を配置すると、その動作が大幅に変わります。結合で指定すると、条件を満たす行のサブセットのみが結合されるため、行が効率的に選択されます。対照的に、WHERE 句を使用すると、すでに結合されている行がフィルタリングされ、条件を満たさない行は破棄されます。

したがって、すべてのカテゴリと特定のユーザーが購読しているカテゴリを効率的にクエリするには、結合に条件を入れます。という条項が推奨されます。このアプローチにより、関連する行のみが結合され、より高速かつ正確な結果が得られます。

以上がMySQL の Where 句の結合: ON と WHERE – どちらが効率的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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