Да кажем първото ви INNER JOIN
връща 75% от 1 000 000 реда в table1
. Втората заявка не връща 250 000 други реда, както си мислите. Вместо това се опитва да създаде декартов продукт и да премахне 750 000 съвпадащи реда. По този начин се опитва да върне 6 000 000 × 1 000 000-750 000 реда. Това е изпъкнал набор от редове 6×10.
Вероятно искате това:
SELECT * FROM table1
LEFT JOIN table2 ON table2.number = table1.number
WHERE table2.number IS NULL
Това връща редове в table1
не присъства в table2
.
Може също да се интересувате от 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
Това връща редове в двете таблици, които нямат съвпадение в другата таблица.