2016-09-01 2 views
0

Was ist der Unterschied zwischen Abfrage A und Abfrage B. Sowohl table_a als auch table_b haben 700k + Datensätze. Der offensichtliche Unterschied, den ich sehen kann, ist die Geschwindigkeit (Leistung). Zusätzlich neigen, unsere Oracle-Berater SQL-Skript mit Query B.Was gibt es sonst noch beim Schreiben von Abfragen?

Query A 
select * 
from table_a a 
inner join table_b b 
on a.id = b.id 

Query B 
select * 
from table_a a,table_b b 
where a.id = b.id 
+3

Der Unterschied besteht darin, dass die erste ist die moderne, robuste Art und Weise des Schreibens verbindet. Die zweite ist die alte, veraltete und zerbrechliche Art des Schreibens von Joins –

+0

... und ich würde keinen Leistungsunterschied zwischen den beiden erwarten, da jede einigermaßen leistungsfähige SQL-Engine denselben Ausführungsplan für beide erzeugen sollte. –

+2

Sie können einen Leistungsunterschied feststellen, wenn Sie jede Abfrage einmal ausführen - das Zwischenspeichern von Datenblöcken könnte dazu führen, dass die zweite, die Sie ausführen, schneller erscheint, da sie alles aus dem Speicher abrufen kann und nicht erneut auf die Festplatte zugreifen muss. Wenn Sie beide Abfragen mehrmals ausführen, sollten die nachfolgenden Ausführungen identisch sein. Schau dir auch die Ausführungspläne an, um zu sehen, was sie beide machen - es sollte dasselbe sein. –

Antwort

0

Die zweite Abfrage wird mit mehr eines relationalen Modells schreiben (es wird nicht mehr empfohlen.) Konzept, während die erste ist ANSI-konform und lesbarer.

Obwohl dieser Artikel ist in SQL Server von Aaron, aber es gibt einen nützlichen Einblick über die alte Praxis: Bad habits to kick : using old-style JOINs

+0

Die zweite ist auch ANSI-konform (wenn auch ein sehr alter ANSI-Standard) –

Verwandte Themen