Er zijn drie mogelijke manieren om deze limiet te omzeilen:
1) Zoals je al zei:verdeel het overzicht in batches van 1000
2) Maak een afgeleide tabel met behulp van de waarden en voeg ze vervolgens samen:
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);
je kunt ook die waarden samenvoegen - misschien zelfs sneller:
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;
Dit genereert nog steeds een heel, heel groot statement, maar heeft niet de limiet van 1000 ids. Ik weet echter niet zeker hoe snel Oracle dit zal ontleden.
3) Voeg de waarden in een (algemene) tijdelijke tabel in en gebruik dan een IN
clausule (of een JOIN
). Dit is waarschijnlijk de snelste oplossing.