SQL/MySQL クエリでは、カンマ区切り結合はキーワード結合よりも効率が低くなりますか?
データベース クエリを作成するとき、JOIN キーワードを使用せずにカンマを使用して結合を区切る構文に遭遇することがよくあります。このメソッドは INNER JOIN に似ていますが、効率に影響を与える可能性があります。この記事では、JOIN キーワードを使用する理由と、それがクエリのパフォーマンスに与える影響について説明します。
カンマ接続とキーワード接続
従来、SQL/MySQL での結合は、カンマ (,) を使用してテーブルをリストし、WHERE 句を使用してフィルタリングすることで実現できます。この方法は「カンマ連結」と呼ばれます:
<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>
ただし、JOIN キーワードの導入により、結合を明示的に定義するための特殊な構文が提供されます。
<code class="language-sql">SELECT * FROM people p JOIN companies c ON p.companyID = c.id WHERE p.firstName = 'Daniel'</code>
パフォーマンスの違い
カンマ連結は技術的にはキーワード連結と同じタスクを実行しますが、特定の状況下ではパフォーマンスの違いが発生する可能性があります。特に、制約のないフィルタリングのためにカンマ結合で WHERE 句を使用すると、効率が低下する可能性があります。
たとえば、次のコンマ連結について考えてみましょう:
<code class="language-sql">SELECT * FROM people p, companies c WHERE p.companyID = c.id AND p.firstName = 'Daniel'</code>
ほとんどのデータベースは、このクエリを最初に people テーブルと company テーブルのデカルト積を実行するものとして解釈します。次に、WHERE 句を適用して、一致するレコードを特定します。デカルト積により巨大なデータ セットが生成される可能性があるため、このアプローチには大きなオーバーヘッドが伴います。
キーワードリンクの利点
JOIN キーワードを使用すると、次の利点があります:
提案
パフォーマンスの考慮事項とキーワード結合の利点に基づいて、すべてのクエリで JOIN キーワードを使用することをお勧めします。既存のカンマ結合クエリをすぐに変更する必要はないかもしれませんが、最新の標準に準拠し、コードの品質を向上させるために、キーワード構文を使用することをお勧めします。
以上がSQL/MySQL クエリのカンマ区切り結合はキーワード結合よりも効率が低いですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。