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

कर्सर में नेस्टेड कर्सर

आम तौर पर, आप केवल दो तालिकाओं में शामिल हो जाते हैं।

FOR some_cursor IN (SELECT s.col1,
                           s.col2
                      FROM sometable s
                           JOIN temp_table t ON (s.col3 = t.col1))
LOOP
  <<do something>>
END LOOP

चूंकि आप दक्षता के बारे में चिंतित हैं, हालांकि

  • है TEMP_TABLE वास्तव में एक अस्थायी तालिका? यदि हां, तो क्यों ? यह अत्यंत दुर्लभ है कि Oracle को वास्तव में अस्थायी तालिकाओं का उपयोग करने की आवश्यकता होती है जिससे मुझे संदेह होता है कि आप शायद अस्थायी तालिका को पहली जगह में पॉप्युलेट करने के लिए कुछ अक्षम कर रहे हैं।
  • आपके पास एक कर्सर क्यों है FOR TEMP_TABLE . से डेटा संसाधित करने के लिए लूप ? पंक्ति-दर-पंक्ति प्रसंस्करण पीएल/एसक्यूएल में कुछ भी करने का सबसे धीमा तरीका है, इसलिए यदि आप दक्षता के बारे में चिंतित हैं तो इसे आम तौर पर टाला जाएगा। एक प्रदर्शन के दृष्टिकोण से, आप SQL को अधिकतम करना चाहते हैं ताकि एक लूप करने के बजाय जो एकल-पंक्ति INSERT की एक श्रृंखला करता है या UPDATE संचालन, आप एक ही INSERT करेंगे या UPDATE जिसने पंक्तियों के पूरे सेट को संशोधित किया। यदि आपको वास्तव में डेटा को टुकड़ों में संसाधित करने की आवश्यकता है, तो पीएल/एसक्यूएल संग्रह और थोक प्रसंस्करण चलेंगे लेकिन यह सीधे एसक्यूएल के रूप में कुशल नहीं होगा।
  • आपके पास DISTINCT क्यों है? TEMP_TABLE . के विरुद्ध आपकी क्वेरी में ? क्या आप वाकई उम्मीद करते हैं कि डुप्लिकेट big_id होगा मूल्य जो गलत नहीं हैं? अधिकांश समय, लोग DISTINCT . का उपयोग करते हैं गलत तरीके से या तो उन समस्याओं को कवर करने के लिए जहां डेटा को गलत तरीके से जोड़ा गया है या जहां आप ओरेकल को एक महंगा सॉर्ट करने के लिए मजबूर कर रहे हैं, अगर भविष्य में गलत डेटा बन जाता है जब एक बाधा खुद को बचाने के लिए अधिक उपयुक्त तरीका होगा।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. NHibernate के साथ वितरित लेनदेन में शामिल होने में असमर्थ

  2. SQL Oracle:एक खाली परिणाम को शब्द से बदलें

  3. ORACLE SQL में दिनांक कॉलम से सभी महीनों की सूची बनाएं

  4. Mybatis के साथ pl/sql फ़ंक्शन को कॉल करना 3

  5. Oracle में दोहरी तालिका क्या है?