Existují tři možné způsoby, jak tento limit obejít:
1) Jak jste již uvedli:rozdělte výpis do dávek po 1000
2) Vytvořte odvozenou tabulku pomocí hodnot a poté je spojte:
with id_list (id) as (
select 'V1' from dual union all
select 'V2' from dual union all
select 'V3' from dual
)
select *
from the_table
where column_name in (select id from id_list);
alternativně můžete tyto hodnoty také spojit – může to být dokonce rychlejší:
with id_list (id) as (
select 'V1' from dual union all
select 'V2' from dual union all
select 'V3' from dual
)
select t.*
from the_table t
join id_list l on t.column_name = l.id;
To stále generuje opravdu, opravdu obrovské prohlášení, ale nemá limit 1000 ID. Nejsem si jistý, jak rychle to Oracle bude analyzovat.
3) Vložte hodnoty do (globální) dočasné tabulky a poté použijte IN
klauzule (nebo JOIN
). Toto bude pravděpodobně nejrychlejší řešení.