Zalecanym sposobem radzenia sobie z tym w Oracle jest utworzenie tabeli tymczasowej, zapisanie w niej wartości, a następnie dołączenie do niej. Korzystanie z dynamicznie tworzonego IN
klauzule oznaczają, że optymalizator zapytań wykonuje „twardą analizę” każdego zapytania.
create global temporary table LOOKUP
(
ID NUMBER
) on commit delete rows;
-- Do a batch insert from your application to populate this table
insert into lookup(id) values (?)
-- join to it
select foo from bar where code in (select id from lookup)