Oracleでこれを処理するための推奨される方法は、一時テーブルを作成し、これに値を書き込んでから、これに結合することです。動的に作成されたIN
を使用する 句は、クエリオプティマイザがすべてのクエリの「ハード解析」を実行することを意味します。
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)