sql >> Databáze >  >> RDS >> Oracle

Jak vyřešit ORA-01795 v kódu Java

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í.



  1. 25 Microsoft Access Zkratky pro úsporu času v tabulkách v zobrazení datového listu

  2. Představujeme novou funkci – Spotlight Cloud Replication

  3. C# s MySQL přes Connector/NET

  4. Maximální šířka sloupce ve frontě Oracle do souboru