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

LIKE '%...%' वाइल्डकार्ड क्वेरीज़ के लिए PL/SQL प्रदर्शन ट्यूनिंग

जैसा कि पहले ही उल्लेख किया गया है कि आप नाम कॉलम में एक ctx संदर्भ अनुक्रमणिका जोड़ सकते हैं।

यह मानते हुए कि रिकॉर्ड की एक छोटी संख्या अपडेट हो जाती है, 1 विकल्प है कि आप अपनी अनुक्रमणिका को प्रतिदिन ताज़ा करें। (और रिकॉर्ड करें जब यह हुआ)

फिर खोजी जा रही अपनी तालिका में एक अंतिम अद्यतन दिनांक कॉलम और अनुक्रमणिका जोड़ें।

पुराने अपरिवर्तित डेटा के बहुमत के लिए अपने सीटीएक्स इंडेक्स को स्कैन करना और पारंपरिक LIKEe.g का उपयोग करके अपडेट किए गए डेटा के छोटे प्रतिशत से चयन करना संभव होना चाहिए:

WHERE (lastupdated<lastrefresh AND contains(name,'%ABC%')) 
   OR (lastupdated>lastrefresh AND name like '%ABC%')

नोट:आप पा सकते हैं कि आपकी क्वेरी योजना थोड़ी मानसिक (पंक्ति आईडी में बहुत सारे बिटमैप रूपांतरण) हो जाती है, उस स्थिति में OR के 2 भागों को UNION ALL क्वेरी में विभाजित कर दिया जाता है।

SELECT id FROM mytable   
    WHERE 
    (lastupdate>lastrefresh and name LIKE '%ABC%')
    UNION ALL
    SELECT id FROM mytable   
    WHERE lastupdate<lastrefresh and CONTAINS(name, '%ABC%', 1) > 0


  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 :एक ही पंक्ति के विभिन्न स्तंभों से अधिकतम मान का चयन करें

  3. पीएल/एसक्यूएल विकास के लिए सही टूलबॉक्स क्या है?

  4. उबंटू मशीन पर ओरेकल इंस्टेंट क्लाइंट और pdo_oci कैसे स्थापित करें?

  5. Oracle में CLOB कॉलम को कैसे क्वेरी करें?