Powinieneś użyć nie istnieje:
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)
Używanie NOT IN nie jest najlepszą metodą, aby to zrobić, nawet jeśli zaznaczysz tylko jeden klucz. Powodem jest to, że jeśli użyjesz NIE ISTNIEJE, DBMS będzie musiał tylko sprawdzić indeksy, jeśli istnieją indeksy dla potrzebnych kolumn, gdzie w przypadku NOT IN będzie musiał odczytać rzeczywiste dane i utworzyć pełny zestaw wyników, który następnie należy sprawdzić .
Używanie LEFT JOIN, a następnie sprawdzanie NULL jest również złym pomysłem, będzie boleśnie powolne, gdy tabele są duże, ponieważ zapytanie musi wykonać całe sprzężenie, w pełni odczytać obie tabele, a następnie wyrzucić ich dużo. Ponadto, jeśli kolumny pozwalają na wartości NULL, sprawdzenie NULL zgłosi fałszywe alarmy.