अनुकूलक सोचता है कि पूर्ण तालिका स्कैन बेहतर होगा।
अगर कुछ ही NULL
हैं तो पंक्तियाँ, अनुकूलक सही है।
यदि आप पूरी तरह से आश्वस्त हैं कि अनुक्रमणिका पहुँच तेज़ होगी (अर्थात, आपके पास 75%
से अधिक है col1 IS NULL
वाली पंक्तियाँ ), फिर अपनी क्वेरी का संकेत दें:
SELECT /*+ INDEX (t index_name_on_col1) */
*
FROM mytable t
WHERE col1 IS NOT NULL
क्यों 75%
?
क्योंकि INDEX SCAN
का उपयोग कर रहे हैं इंडेक्स द्वारा कवर नहीं किए गए मानों को पुनः प्राप्त करने के लिए ROWID
. पर एक छिपे हुए जुड़ाव का अर्थ है , जिसकी कीमत लगभग 4
. है टेबल स्कैन जितना गुना।
यदि अनुक्रमणिका श्रेणी में 25%
. से अधिक शामिल है पंक्तियों में, तालिका स्कैन आमतौर पर तेज़ होता है।
जैसा कि Tony Andrews
ने बताया है , क्लस्टरिंग कारक इस मान को मापने के लिए अधिक सटीक तरीका है, लेकिन 25%
अभी भी अंगूठे का एक अच्छा नियम है।