Laten we zeggen je eerste INNER JOIN
retourneert 75% van de 1.000.000 rijen in table1
. De tweede query retourneert niet de 250.000 andere rijen zoals u denkt. In plaats daarvan probeert het een Cartesiaans product te maken en de 750.000 overeenkomende rijen te verwijderen. Het probeert dus 6.000.000 × 1.000.000-750.000 rijen te retourneren. Dat is een uitpuilende resultatenset van 6×10 rijen.
Dit wil je waarschijnlijk:
SELECT * FROM table1
LEFT JOIN table2 ON table2.number = table1.number
WHERE table2.number IS NULL
Dit retourneert rijen in table1
niet aanwezig in table2
.
Mogelijk ben je ook geïnteresseerd in 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
Dit retourneert rijen in beide tabellen die niet overeenkomen met de andere tafel.