Este artigo pode ser do seu interesse:
Em poucas palavras,
NOT IN é ligeiramente diferente de NOT EXISTS na maneira como os dois lidam com NULL valores retornados pela subconsulta. Se não houver
NULL valores, ambos executam um tipo em NESTED LOOP ANTI JOIN , mas NOT IN é um pouco mais eficiente.