Penso che tu abbia un po' di confusione, ti stai facendo un'idea sbagliata, 'EXISTS' funziona più velocemente di 'IN' e sto cercando di farti capire il motivo..
EXISTS restituisce un booleano e restituirà un booleano alla prima corrispondenza. Quindi, se hai a che fare con duplicati/multipli, "EXISTS" sarà più veloce da eseguire rispetto a "IN" o "JOIN" a seconda dei dati e delle esigenze.
Considerando che "IN" è lo zucchero sintattico per le clausole OR. Sebbene sia molto accomodante, ci sono problemi nell'affrontare molti valori per quel confronto (a nord di 1.000). In caso di duplicati/multipli, "IN" controlla tutti i valori esistenti, il che richiede naturalmente più tempo per l'esecuzione rispetto a "ESISTI", ecco perché 'IN' è sempre relativamente più lento di 'EXISTS'.
Spero di aver chiarito la tua confusione.