ホームページ >データベース >mysql チュートリアル >T-SQL の ANSI JOIN と非 ANSI JOIN: パフォーマンスの違いは何ですか?

T-SQL の ANSI JOIN と非 ANSI JOIN: パフォーマンスの違いは何ですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-21 03:41:09460ブラウズ

ANSI JOIN vs. Non-ANSI JOIN in T-SQL: What are the Performance Differences?

T-SQL における ANSI JOIN と非 ANSI JOIN のパフォーマンスの違い

T-SQL ストアド プロシージャでは、非 ANSI JOIN 構文が常に一般的です。

<code class="language-sql">SELECT A.A, B.B, C.C
FROM aaa AS A, bbb AS B, ccc AS C
WHERE
    A.B = B.ID
AND B.C = C.ID
AND C.ID = @param</code>

これを ANSI-92 JOIN 構文に置き換えることでパフォーマンスが向上する可能性があるという推測があります。

<code class="language-sql">SELECT A.A, B.B, C.C
FROM aaa AS A
JOIN bbb AS B
   ON A.B = B.ID
JOIN ccc AS C
   ON B.C = C.ID
   AND C.ID = @param</code>

それらは同じですか?

この特定の例では、両方のクエリの実行は同じです。ただし、ANSI-92 構文にはいくつかの利点があります。

  • 明確さ: JOIN 句はロジックをリレーションとフィルターに分離し、読みやすさを高めます。
  • 曖昧さの回避: 場合によっては、非 ANSI 外部結合により、あいまいな結果やデッドロックが発生する可能性があります。 ANSI-92 構文では、この状況は解消されます。
  • 標準への準拠: ANSI-92 は現在の業界標準であり、ほとんどの開発者およびクエリ ツールで採用されています。
  • 予期しないデカルト積の回避: JOIN 句は、予期しないデカルト積を防ぐのに役立ちます。

非 ANSI 構文の引数

非 ANSI 構文は、フィルタリングが後に続くデカルト積として SQL を概念化するのに役立つと主張する人もいます。この手法は理解を助けることができますが、一般的には ANSI-92 構文の方が明確で標準に準拠しているため、推奨される ANSI-92 構文をお勧めします。このルールの唯一の例外は、自然結合を使用する場合です。自然結合には固有のリスクがあるため、完全に回避する必要があります。

以上がT-SQL の ANSI JOIN と非 ANSI JOIN: パフォーマンスの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。