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

Oracle IN ऑपरेटर में JPA और 1000 ID का उपयोग

IN . के आसपास काम करना सीमा अक्षम है और जेपीए हमेशा नौकरी के लिए सही उपकरण नहीं है। निम्नलिखित पर विचार करें:

  1. हजारों बाध्य मान संभावित रूप से SQL के मेगाबाइट में परिणामित होंगे। इस SQL ​​​​को डेटाबेस में भेजने में काफी समय लगेगा। डेटाबेस को SQL टेक्स्ट को टॉम का उत्तर "सूची में बहुत लंबी सीमा और रूपांतरण:WHERE x IN ( ,,, ...)" प्रश्न

  2. एसक्यूएल पार्सिंग के कारण यह अक्षम होगा। इस लंबे SQL को पार्स करने में न केवल लंबा समय लगता है, बल्कि प्रत्येक आमंत्रण में अलग-अलग संख्या में बाध्य पैरामीटर होते हैं जिन्हें अलग से पार्स और योजनाबद्ध किया जाएगा (देखें यह लेख जो इसे समझाता है )।

  3. SQL कथन में बाध्य मापदंडों की एक कठिन सीमा है। आप OR दोहरा सकते हैं IN . के आसपास काम करने के लिए कुछ बार सीमा लेकिन आप किसी बिंदु पर SQL कथन सीमा को हिट करने जा रहे हैं।

ऐसे प्रश्नों के लिए आमतौर पर अस्थायी बनाना बेहतर होता है टेबल . अपनी क्वेरी से पहले एक बनाएं, उसमें सभी पहचानकर्ता डालें और IN का अनुकरण करने के लिए अपनी क्वेरी में इकाई तालिका से जुड़ें स्थि‍ति।

आदर्श रूप से, आप जेपीए को एक संग्रहीत प्रक्रिया के साथ बदल सकते हैं, खासकर यदि आप डेटाबेस से हजारों पहचानकर्ताओं को निकाल रहे हैं ताकि उन्हें अगली क्वेरी में डेटाबेस में वापस भेज दिया जा सके।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं प्राथमिक कुंजी कॉलम में Oracle अनुक्रम अंतराल का पुन:उपयोग कैसे करूं?

  2. oracle में CONNECT-BY क्वेरी से डुप्लिकेट सबट्री हटाना

  3. SQL*Plus में, मैं कनेक्टेड उपयोगकर्ता और डेटाबेस को दिखाने के लिए प्रॉम्प्ट को कैसे बदल सकता हूँ?

  4. ओरेकल:अधिकतम (आईडी) +1 और अनुक्रम के बीच का अंतर। अगला

  5. Oracle SQL PLS-00049:खराब बाइंड वैरिएबल