Ada tiga cara potensial untuk mengatasi batas ini:
1) Seperti yang telah Anda sebutkan:pisahkan pernyataan dalam kelompok 1000
2) Buat tabel turunan menggunakan nilai-nilai tersebut, lalu gabungkan dengannya:
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);
sebagai alternatif, Anda juga dapat menggabungkan nilai-nilai tersebut - bahkan mungkin lebih cepat:
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;
Ini masih menghasilkan pernyataan yang sangat, sangat besar, tetapi tidak memiliki batas 1000 id. Saya tidak yakin seberapa cepat Oracle akan menguraikan ini.
3) Masukkan nilai ke dalam tabel sementara (global) dan kemudian gunakan IN
klausa (atau JOIN
). Ini mungkin akan menjadi solusi tercepat.