Heim > Datenbank > MySQL-Tutorial > ANSI JOIN vs. Nicht-ANSI JOIN in T-SQL: Was sind die Leistungsunterschiede?

ANSI JOIN vs. Nicht-ANSI JOIN in T-SQL: Was sind die Leistungsunterschiede?

Susan Sarandon
Freigeben: 2025-01-21 03:41:09
Original
414 Leute haben es durchsucht

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

Leistungsunterschied zwischen ANSI JOIN und Nicht-ANSI JOIN in T-SQL

In gespeicherten T-SQL-Prozeduren war die Nicht-ANSI-JOIN-Syntax schon immer üblich:

<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>
Nach dem Login kopieren

Es gibt Spekulationen, dass das Ersetzen durch die ANSI-92 JOIN-Syntax die Leistung verbessern könnte:

<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>
Nach dem Login kopieren

Sind sie gleich?

In diesem speziellen Beispiel ist die Ausführung beider Abfragen identisch. Allerdings hat die ANSI-92-Syntax mehrere Vorteile:

  • Klarheit: Die JOIN-Klausel trennt die Logik in Beziehungen und Filter und verbessert so die Lesbarkeit.
  • Mehrdeutigkeiten vermeiden: In einigen Fällen können Nicht-ANSI-Outer-Joins zu mehrdeutigen Ergebnissen oder Deadlocks führen. Die ANSI-92-Syntax beseitigt diese Situation.
  • Standardkonformität: ANSI-92 ist der aktuelle Industriestandard und wurde von den meisten Entwicklern und Abfragetools übernommen.
  • Unerwartete kartesische Produkte vermeiden: Die JOIN-Klausel hilft, unerwartete kartesische Produkte zu verhindern.

Argumente mit Nicht-ANSI-Syntax

Einige argumentieren, dass eine Nicht-ANSI-Syntax dabei hilft, SQL als kartesisches Produkt mit anschließender Filterung zu konzipieren. Obwohl diese Technik das Verständnis erleichtern kann, wird die bevorzugte ANSI-92-Syntax empfohlen, da sie im Allgemeinen klarer und standardkonformer ist. Die einzige Ausnahme von dieser Regel ist die Verwendung natürlicher Verknüpfungen, die aufgrund ihrer inhärenten Risiken gänzlich vermieden werden sollten.

Das obige ist der detaillierte Inhalt vonANSI JOIN vs. Nicht-ANSI JOIN in T-SQL: Was sind die Leistungsunterschiede?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage