ホームページ >データベース >mysql チュートリアル >カンマ区切りとクロス結合: デカルト積にはどちらの SQL 構文を使用する必要がありますか?
データベース操作では、多くの場合、複数のテーブルのデータを結合する必要があります。この記事では、デカルト積を作成する 2 つの方法、カンマ区切り構文と CROSS JOIN
演算子を検討します。
ステートメント SELECT * FROM A, B
は、コンマを使用してテーブル A と B を結合し、デカルト積を生成します。 これは、テーブル A の各行が、それらの間の関係に関係なく、テーブル B のすべての行とペアになることを意味します。
CROSS JOIN
構文ステートメント SELECT * FROM A CROSS JOIN B
は、CROSS JOIN
演算子を明示的に使用して、カンマ区切りメソッドと同じデカルト積の結果を実現します。
興味深いことに、これら 2 つのアプローチの間にはパフォーマンスに大きな違いはありません。どちらも、関係するテーブルから可能なすべての行の組み合わせを生成します。
機能的には同等ですが、一般的には CROSS JOIN
が好まれます。 これは、カンマ区切り方式 (SQL-89 構文とみなされる) とは異なり、SQL-92 標準に準拠しているためです。 古いカンマ区切り構文には外部結合 (LEFT、RIGHT、FULL) のネイティブ サポートが不足しており、データベース固有の実装と移植性の問題が発生していました。 SQL-92 では外部結合構文が標準化されており、CROSS JOIN
がより一貫性と移植性の高い選択肢となっています。
どちらの構文も同一のデカルト積を作成しますが、CROSS JOIN
は SQL-92 準拠の推奨アプローチであり、さまざまなデータベース システム間で一貫した動作を保証し、外部結合操作との互換性を高めます。
以上がカンマ区切りとクロス結合: デカルト積にはどちらの SQL 構文を使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。