Je zei dat je dat niet wilt, maar:gebruik een tijdelijke tabel. Dat is hier de juiste oplossing.
Het ontleden van query's is duur in Oracle, en dat krijg je als je duizenden identifiers in een gigantische klodder SQL stopt. Er zijn ook slecht gedefinieerde limieten op de lengte van de zoekopdracht die u gaat raken. Een anti-JOIN doen tegen een tafel daarentegen... Oracle is daar goed in. Bulksgewijs laden van gegevens in een tabel, daar is Oracle ook goed in. Gebruik een tijdelijke tabel.
Beperking van IN
tot duizend inzendingen is een sanity check. Het feit dat je het raakt, betekent dat je iets krankzinnigs probeert te doen.