Where 句を使用した MySQL 結合の最適化
MySQL では、さまざまなタイプの結合を使用して 2 つのテーブルを結合できます。左結合を実行し、一方または両方のテーブルの列に基づいて条件を適用する場合、条件の配置がクエリの効率と結果に影響を与える可能性があります。
次のシナリオを検討してください。
次のクエリにより、目的の結果が得られます:
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 サイトの他の関連記事を参照してください。