Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

जावा कोड में ORA-01795 कैसे हल करें?

इस सीमा के आसपास तीन संभावित तरीके हैं:

1) जैसा कि आप पहले ही बता चुके हैं:स्टेटमेंट को 1000 के बैच में विभाजित करें

2) मानों का उपयोग करके एक व्युत्पन्न तालिका बनाएं और फिर उनसे जुड़ें:

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);

वैकल्पिक रूप से आप उन मूल्यों में भी शामिल हो सकते हैं - और भी तेज़ हो सकते हैं:

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;

यह अभी भी वास्तव में एक बहुत बड़ा बयान उत्पन्न करता है, लेकिन इसमें 1000 आईडी की सीमा नहीं है। मुझे यकीन नहीं है कि ओरेकल इसे कितनी तेजी से पार्स करेगा।

3) मानों को एक (वैश्विक) अस्थायी तालिका में डालें और फिर एक IN . का उपयोग करें खंड (या एक JOIN ) यह शायद सबसे तेज़ समाधान होने जा रहा है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आप कैसे देख सकते हैं कि एक मनमाना ऑरैकल सत्र किस लेनदेन अलगाव स्तर का उपयोग कर रहा है

  2. तालिका में संग्रहीत तालिका और स्तंभ नाम को क्वेरी करें

  3. पीएल/एसक्यूएल में शिफ्ट ऑपरेटर

  4. Oracle का उपयोग करके PIVOT के साथ तीन तालिकाओं को एक में संयोजित करें

  5. PL/SQL में वास्तव में IN, OUT, IN OUT पैरामीटर क्या हैं?