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.