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

इस क्वेरी के लिए अनुक्रमणिका का उपयोग क्यों नहीं किया जाता है?

अपडेट करें: कॉल कॉलम को न्यूल नहीं बनाने का प्रयास करें। यही कारण है कि यह सूचकांक का उपयोग नहीं कर रहा है। जब यह शून्य न हो, तो यह रही योजना।

SELECT STATEMENT, GOAL = ALL_ROWS           69  10  30
                    HASH GROUP BY           69  10  30
 INDEX FAST FULL SCAN   SANDBOX TEST_INDEX  56  98072   294216

यदि ऑप्टिमाइज़र यह निर्धारित करता है कि इंडेक्स का उपयोग नहीं करना अधिक कुशल है (शायद क्वेरी को फिर से लिखने के कारण), तो ऐसा नहीं होगा। ऑप्टिमाइज़र संकेत बस यही हैं, अर्थात्, Oracle को एक इंडेक्स बताने के लिए संकेत जो आपको पसंद यह उपयोग करने के लिए। आप उन्हें सुझाव के रूप में सोच सकते हैं। लेकिन अगर ऑप्टिमाइज़र यह निर्धारित करता है कि इंडेक्स का उपयोग नहीं करना बेहतर है (फिर से, उदाहरण के लिए क्वेरी रीराइट के परिणामस्वरूप), तो यह नहीं होने वाला है।

इस लिंक को देखें:http://download। oracle.com/docs/cd/B19306_01/server.102/b14211/hintsref.htm "इन संकेतों में से किसी एक को निर्दिष्ट करने से ऑप्टिमाइज़र निर्दिष्ट एक्सेस पथ का चयन करता है, यदि एक्सेस पथ किसी इंडेक्स या क्लस्टर के अस्तित्व और SQL कथन के वाक्य रचनात्मक निर्माण के आधार पर उपलब्ध है। यदि कोई संकेत अनुपलब्ध पहुंच पथ निर्दिष्ट करता है, तब अनुकूलक इसे अनदेखा कर देता है।"

चूंकि आप एक गिनती (*) ऑपरेशन चला रहे हैं, इसलिए अनुकूलक ने यह निर्धारित किया है कि आपकी अनुक्रमणिका का उपयोग करने के बजाय पूरी तालिका और हैश को स्कैन करना अधिक कुशल है।

संकेतों पर एक और आसान लिंक यहां दिया गया है:http://www.dba-oracle.com/t_hint_ignored। एचटीएम



  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. ओरेकल pl/sql में एक्सएमएल पार्सिंग

  3. Oracle SQL क्वेरी के साथ पहले संख्याओं के आधार पर कैसे छाँटें?

  4. अद्यतन के लिए थोक संग्रह का उपयोग कर

  5. बिना जॉइन के Oracle IN क्लॉज के प्रदर्शन निहितार्थ क्या हैं?