左結合クエリの最適化: 最初にフィルタリングするか、最後にフィルタリングするか?
データの分析と処理では、左結合を実行する前にテーブル内のデータをフィルタリングして、左テーブル内の必要な行のみが結合結果に含まれるようにする必要があることがよくあります。
問題の説明
「Customer」と「Entry」という 2 つのテーブルがあるとします。「Customer」列に基づいて左結合を実行しますが、「Entry テーブル」には ' D に等しい「Category」列のみを含めます。 」というエントリー。結合後に WHERE
句を使用してフィルターを適用すると、左側のテーブル内の一致する行が除外されます。
解決策
結合する前に左側のテーブルをフィルターするには、フィルター条件を左側の結合ステートメントの ON
句に移動します。これにより、左側のテーブルの行が右側のテーブルに結合される前にフィルタリングされるようになります。
<code class="language-sql">SELECT c.Customer, c.State, e.Entry FROM Customer c LEFT JOIN Entry e ON c.Customer = e.Customer AND e.Category = 'D'</code>
説明
このクエリの ON
句には、「category」列に基づいて「entries テーブル」をフィルタリングする追加条件 e.Category = 'D'
が含まれています。 Customers テーブルの行は、指定された カテゴリ値に一致する Customer テーブルが Customers テーブルに存在する場合にのみ結合に含まれます。
メリット
結合する前に左側のテーブルをフィルタリングすると、次のことが保証されます:
結論
この手法を使用すると、左結合を実行する前にテーブル内のデータを効果的にフィルタリングできます。これにより、接続結果が分析またはデータ処理タスクに必要なデータ要件を正確に反映することが保証されます。
以上がフィルタリングは左結合の前後に行うべきですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。