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

क्या मेरे पास बाएं जुड़ने का उपयोग करते समय एक समग्र अनुक्रमणिका हो सकती है

यह अपेक्षा के अनुरूप काम करता है। Oracle ने ठीक वही किया जो आपने उसे करने के लिए कहा था।

CREATE INDEX email_phonenumber_student_idx
  ON student(phonenumber, email);

आपके पास phonenumber, email . पर एक संयुक्त अनुक्रमणिका है , जबकि आप फ़िल्टर विधेय . में किसी भी कॉलम का उपयोग नहीं करते हैं आपकी क्वेरी का:

where months_between(SYSDATE, dateofbirth)/12 >= 18 
and  xyz.studentnumber is null;

तो कोई कारण नहीं है कि Oracle एक इंडेक्स स्कैन क्यों करेगा phonenumber, email . पर . आप केवल समग्र कुंजी के उन स्तंभों को चुन रहे हैं, उन्हें फ़िल्टर नहीं कर रहे हैं:

SELECT Phonenumber, email 
from student left join Xyz

सूचकांक का उपयोग तब किया जाएगा जब आप प्रोजेक्ट वे कॉलम, न कि केवल चुनें . STUDENT अपेक्षित रूप से तालिका एक FULL TABLE SCAN के लिए जाती है क्योंकि यह एक सादा चयन है और अनुक्रमित कॉलम पर किसी भी फ़िल्टर का उपयोग नहीं करता है। यदि आप एक इंडेक्स स्कैन होते हुए देखना चाहते हैं, तो नीचे फ़िल्टर जोड़ें:

AND phonenumber = <value>
AND email = <value>


  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. पीएल/एसक्यूएल पंक्ति में सभी विशेषताओं को कैसे लौटाता है?

  5. फॉरवर्ड क्रॉस संस्करण R12.2 . में ट्रिगर होता है