SQL でカンマ結合を避ける理由
新しい SQL 開発者は、テーブルを結合するあまり明示的ではない方法であるカンマ結合をよく使用します。
<code class="language-sql">SELECT a.someRow, b.someRow FROM tableA AS a, tableB AS b WHERE a.ID=b.ID AND b.ID= $someVar</code>
このメソッドは機能しますが (INNER JOIN
と同等)、パフォーマンスに潜在的な欠点があります。
コンマ結合の非効率性
次の例を考えてみましょう:
<code class="language-sql">SELECT * FROM people p, companies c WHERE p.companyID = c.id AND p.firstName = 'Daniel'</code>
データベースは、最初に完全なデカルト積 (people
行と companies
行のすべての組み合わせ) を作成し、次に WHERE
句に基づいてフィルター処理する場合があります。 これは、他の方法に比べて効率が大幅に低くなります。
キーワードベースの結合の優位性
明示的な JOIN
キーワードと ON
句を使用すると、より効率的で読みやすいアプローチが提供されます。
<code class="language-sql">SELECT * FROM people p JOIN companies c ON p.companyID = c.id WHERE p.firstName = 'Daniel'</code>
これにより、データベースへの結合条件が明確に示され、結合プロセスが最適化され、大規模な中間デカルト積の不必要な作成が回避されます。 これにより、特に大規模なデータセットの場合、クエリの実行が高速化され、リソース消費が削減されます。
ベスト プラクティス: 常に JOIN キーワードを使用する
パフォーマンス、可読性、保守性を向上させるために、カンマ結合よりも常に JOIN
キーワード (INNER JOIN
、LEFT JOIN
、RIGHT JOIN
など) を優先してください。既存のカンマ結合をすぐに書き直す必要はないかもしれませんが、このベスト プラクティスを採用することで SQL コードが一貫して改善されます。
以上がSQL でカンマ結合よりも JOIN キーワードが優先されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。