SQL 結合順序: 結果に影響しますか?
この記事では、特に内部結合と外部結合を組み合わせる場合に、SQL クエリの結合順序を変更することが結果に影響するかどうかを検討します。 この分析ではパフォーマンスへの影響は無視します。
内部結合:
内部結合におけるテーブルの順序は重要ではありません。 SELECT
句が列を明示的にリストするように調整されている場合 (例: SELECT a.*, b.*, c.*
の代わりに SELECT *
)、結果は同一のままです。
外部結合 (LEFT、RIGHT、FULL):
外部結合の場合は状況が大きく異なります。
a LEFT JOIN b
と同じではありません。b LEFT JOIN a
<code class="language-sql">a LEFT JOIN b ON b.ab_id = a.ab_id LEFT JOIN c ON c.ac_id = a.ac_id</code>
<code class="language-sql">a LEFT JOIN c ON c.ac_id = a.ac_id LEFT JOIN b ON b.ab_id = a.ab_id</code>
<code class="language-sql">a LEFT JOIN b ON b.ab_id = a.ab_id LEFT JOIN c ON c.ac_id = a.ac_id AND c.bc_id = b.bc_id</code>
結合条件構造:
結合条件の構造は非常に重要です。例:
<code class="language-sql">a LEFT JOIN b ON b.ab_id = a.ab_id LEFT JOIN c ON c.bc_id = b.bc_id</code>
<code class="language-sql">a LEFT JOIN (b LEFT JOIN c ON c.bc_id = b.bc_id) ON b.ab_id = a.ab_id</code>
などの関数を含めると、順序が異なるクエリ間の等価性が失われる可能性があります。COALESCE()
以上が特に内部結合と外部結合が混在する場合、結合順序は SQL クエリの結果に影響しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。