パフォーマンスの比較: WHERE 句を使用したクロス結合と内部結合
クロス結合の後に WHERE 句を使用することの有効性は、多くの場合、内部結合のパフォーマンスについては議論されています。どちらのアプローチでも同様の結果が得られますが、状況によっては一方のパフォーマンスが他方よりも優れている場合があります。
WHERE 句によるクロス結合
クロス結合は、次のすべての行を結合します。 2 つ以上のテーブル (それらの間の関係に関係なく)。 WHERE 句と組み合わせると、クロス結合は指定された述語に基づいて目的の行を効果的にフィルタリングします。
内部結合
内部結合は 2 つのテーブルの行と一致します。 ON 句または USING 句で定義された等価比較に基づきます。結果の行には、一致する行の列のみが含まれます。
パフォーマンスに関する考慮事項
一般に、内部結合は WHERE 句を使用したクロス結合よりも効率的です。
クロス結合では、DBMS はまず 2 つのテーブルのデカルト積全体を生成する必要があります。特に大きなテーブルの場合、計算コストが高くなります。その後、WHERE 句を適用すると不要な行が削除され、追加の処理が必要になります。
一方、内部結合は結合条件を満たす行のみを結合するため、最初のデカルト積は必要ありません。これにより、実行時間が短縮されます。
例
提供されているクエリの例を考えてみましょう。
SELECT User.* FROM User, Address WHERE User.addressId = Address.id; SELECT User.* FROM User INNER JOIN Address ON (User.addressId = Address.id);
内部結合を使用する 2 番目のクエリは通常、クロス結合と WHERE 句を使用した最初のクエリよりも高速に実行されます。 DBMS は、最初に大規模なデカルト積を生成することなく、等価比較に基づいて User テーブルから目的の行を直接選択できます。
結論
WHERE とのクロス結合中句は内部結合と同様の結果を達成できますが、一般に内部結合の方がパフォーマンスが向上します。ただし、特定のベンダーのパフォーマンス ガイドラインが、さまざまな状況における結合の最適な選択に影響を与える可能性があることに注意することが重要です。
以上がWHERE によるクロス結合と内部結合: どちらの SQL 結合がより優れたパフォーマンスを提供しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。