Powiedzmy, że Twoje pierwsze INNER JOIN zwraca 75% z 1 000 000 wierszy w table1 . Drugie zapytanie nie zwraca 250 000 innych wierszy, jak myślisz. Zamiast tego próbuje utworzyć produkt kartezjański i usunąć 750 000 pasujących wierszy. W ten sposób próbuje zwrócić 6 000 000 × 1 000 000-750 000 wierszy. To wybrzuszony zestaw wyników 6×10 wierszy.
Prawdopodobnie tego chcesz:
SELECT * FROM table1
LEFT JOIN table2 ON table2.number = table1.number
WHERE table2.number IS NULL
Zwraca wiersze w table1 brak w table2 .
Możesz być również zainteresowany FULL OUTER JOIN :
SELECT * FROM table1
FULL OUTER JOIN table2 ON table2.number = table1.number
WHERE table1.number IS NULL AND table2.number IS NULL
Zwraca to wiersze w obu tabelach, które nie pasują do drugiej tabeli.