Meine Frage ist ähnlich zu diesem SQL order of operations aber mit einem kleinen Twist, also ich denke, es ist fair zu fragen.WHERE und JOIN Reihenfolge der Operation
Ich benutze Teradata. Und ich habe 2 Tabellen: table1
, table2
.
table1
hat nur eine id
Spalte.
table2
hat die folgenden Spalten: id
, val
Ich könnte falsch sein, aber ich denke, diese beiden Aussagen die gleichen Ergebnisse liefern.
Statement 1.
SELECT table1.id, table2.val
FROM table1
INNER JOIN table2
ON table1.id = table2.id
WHERE table2.val<100
Statement 2.
SELECT table1.id, table3.val
FROM table1
INNER JOIN (
SELECT *
FROM table2
WHERE val<100
) table3
ON table1.id=table3.id
Meine Fragen ist, wird der Abfrageoptimierer
intelligent genug sein - führen Sie die WHERE-Klausel erst dann später JOIN in Anweisung 1
- wissen, dass Tabelle 3 nicht wirklich in Anweisung 2 benötigt wird
Ich bin ziemlich neu in SQL, also bitte erziehe mich, wenn ich etwas falsch verstehe.
Ich hätte gedacht, dass der Abfrageoptimierer mit dem gleichen Plan für beide kommen würde. Versuchen Sie, 'EXPLAIN' Plan auszuführen, um dies zu überprüfen. –