Nehmen wir an, Ihr erster INNER JOIN
gibt 75 % der 1.000.000 Zeilen in table1
zurück . Die zweite Abfrage gibt die 250.000 anderen Zeilen nicht zurück, wie Sie denken. Stattdessen wird versucht, ein kartesisches Produkt zu erstellen und die 750.000 übereinstimmenden Zeilen zu entfernen. Daher wird versucht, 6.000.000 × 1.000.000-750.000 Zeilen zurückzugeben. Das ist eine prall gefüllte 6×10-Zeilen-Ergebnismenge.
Wahrscheinlich möchten Sie dies:
SELECT * FROM table1
LEFT JOIN table2 ON table2.number = table1.number
WHERE table2.number IS NULL
Dies gibt Zeilen in table1
zurück nicht vorhanden in table2
.
Sie könnten auch an FULL OUTER JOIN
interessiert sein :
SELECT * FROM table1
FULL OUTER JOIN table2 ON table2.number = table1.number
WHERE table1.number IS NULL AND table2.number IS NULL
Dies gibt Zeilen in beiden Tabellen zurück, die keine Übereinstimmung in der anderen Tabelle haben.