Měli byste použít neexistující:
SELECT DISTINCT a, b, c FROM t1 WHERE NOT EXISTS (SELECT NULL FROM t2 WHERE t1.a = t2.a AND t1.b = t2.b AND t1.c = t2.c)
Použití NOT IN není nejlepší způsob, jak toho dosáhnout, i když zaškrtnete pouze jeden klíč. Důvodem je to, že pokud použijete NOT EXISTS, DBMS bude muset zkontrolovat indexy pouze v případě, že indexy existují pro potřebné sloupce, kde jako u NOT IN bude muset přečíst skutečná data a vytvořit úplnou sadu výsledků, kterou je třeba následně zkontrolovat. .
Použití LEFT JOIN a následná kontrola NULL je také špatný nápad, bude to bolestně pomalé, když jsou tabulky velké, protože dotaz potřebuje provést celé spojení, číst obě tabulky naplno a následně toho hodně zahodit. Pokud také sloupce umožňují hodnoty NULL, bude kontrola NULL hlásit falešně pozitivní výsledky.