Diciamo il tuo primo INNER JOIN
restituisce il 75% delle 1.000.000 di righe in table1
. La seconda query non restituisce le altre 250.000 righe come pensi. Invece, tenta di creare un prodotto cartesiano e rimuovere le 750.000 righe corrispondenti. Quindi sta cercando di restituire 6.000.000 × 1.000.000-750.000 righe. Questo è un set di risultati di righe 6×10 sporgenti.
Probabilmente vuoi questo:
SELECT * FROM table1
LEFT JOIN table2 ON table2.number = table1.number
WHERE table2.number IS NULL
Questo restituisce le righe in table1
non presente in table2
.
Potrebbe interessarti anche 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
Questo restituisce le righe in entrambe le tabelle che non hanno una corrispondenza nell'altra tabella.