BETWEEN
चाहिए बेहतर प्रदर्शन करें IN
इस मामले में (लेकिन करें निष्पादन योजनाओं को भी मापें और जांचें!), विशेष रूप से n
. के रूप में बढ़ता है और चूंकि आंकड़े अभी भी सटीक हैं। आइए मान लें:
m
आपकी तालिका का आकार हैn
आपकी सीमा का आकार है
इंडेक्स का उपयोग किया जा सकता है (n
m
. की तुलना में छोटा है )
-
सैद्धांतिक रूप से,
BETWEEN
प्राथमिक कुंजी अनुक्रमणिका पर एकल "रेंज स्कैन" (ओरेकल स्पीक) के साथ कार्यान्वित किया जा सकता है, और फिर अधिकतमn
पर ट्रैवर्स किया जा सकता है इंडेक्स लीफ नोड्स। जटिलताO(n + log m)
. होगी -
IN
आमतौर परn
. की एक श्रृंखला (लूप) के रूप में लागू किया जाता है प्राथमिक कुंजी अनुक्रमणिका पर "रेंज स्कैन"।m
. के साथ तालिका का आकार होने के कारण, जटिलता हमेशा रहेगीO(n * log m)
... जो हमेशा बदतर होता है (बहुत छोटी तालिकाओं के लिए नगण्यm
या बहुत छोटी रेंजn
)
इंडेक्स का उपयोग नहीं किया जा सकता (n
m
. का एक महत्वपूर्ण हिस्सा है )
किसी भी स्थिति में, आप एक पूर्ण तालिका स्कैन प्राप्त करेंगे और प्रत्येक पंक्ति पर विधेय का मूल्यांकन करेंगे:
-
BETWEEN
दो विधेय का मूल्यांकन करने की आवश्यकता है:एक निचले के लिए और एक ऊपरी सीमा के लिए। जटिलताO(m)
. है -
IN
ज़्यादा से ज़्यादाn
evaluate का मूल्यांकन करने की ज़रूरत है भविष्यवाणी करता है जटिलता हैO(m * n)
... जो हमेशा बदतर होता है, या शायदO(m)
यदि डेटाबेसIN
. को ऑप्टिमाइज़ कर सकता है विधेय की सूची के बजाय हैशमैप की सूची बनाएं।