Řekněme vaše první INNER JOIN
vrátí 75 % z 1 000 000 řádků v table1
. Druhý dotaz nevrací 250 000 dalších řádků, jak si myslíte. Místo toho se pokusí vytvořit kartézský součin a odstranit 750 000 odpovídajících řádků. Snaží se tedy vrátit 6 000 000 × 1 000 000-750 000 řádků. To je vyboulená sada výsledků 6×10 řádků.
Pravděpodobně budete chtít toto:
SELECT * FROM table1
LEFT JOIN table2 ON table2.number = table1.number
WHERE table2.number IS NULL
To vrátí řádky v table1
není přítomen v table2
.
Také by vás mohlo zajímat 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
To vrátí řádky v obou tabulkách, které nemají shodu v druhé tabulce.