Digamos su primera INNER JOIN
devuelve el 75 % de las 1 000 000 filas en table1
. La segunda consulta no devuelve las otras 250.000 filas como cree. En su lugar, intenta crear un producto cartesiano y eliminar las 750 000 filas coincidentes. Por lo tanto, intenta devolver 6 000 000 × 1 000 000-750 000 filas. Ese es un conjunto de resultados de fila abultado de 6 × 10.
Probablemente quieras esto:
SELECT * FROM table1
LEFT JOIN table2 ON table2.number = table1.number
WHERE table2.number IS NULL
Esto devuelve filas en table1
no presente en table2
.
También te puede interesar 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
Esto devuelve filas en ambas tablas que no tienen una coincidencia en la otra tabla.