Казахте, че не искате, но:използвайте временна таблица. Това е правилното решение тук.
Парсирането на заявки е скъпо в Oracle и това е, което ще получите, когато поставите хиляди идентификатори в гигантски блок от SQL. Освен това има зле дефинирани граници на дължината на заявката, която ще постигнете. Правене на анти-JOIN срещу таблица, от друга страна... Oracle е добър в това. Групово зареждане на данни в таблица, Oracle е добър и в това. Използвайте временна таблица.
Ограничаване на IN
до хиляда записа е проверка за разумност. Фактът, че го удряте означава, че се опитвате да направите нещо безумно.