एक Explain Plan
आपको दिखाया होगा कि वास्तव में आपको Exists
. का उपयोग क्यों करना चाहिए? . आमतौर पर सवाल आता है Exists vs Count(*)
. Exists
ज्यादा तेज़ है। क्यों?
-
NULL द्वारा प्रस्तुत चुनौतियों के संबंध में:जब सबक्वेरी रिटर्न
Null
, क्योंकि IN पूरी क्वेरीNull
. हो जाती है . तो आपको इसे भी संभालने की जरूरत है। लेकिनExists
का उपयोग कर रहे हैं , यह केवल एकfalse
है . सामना करना ज्यादा आसान है। बसIN
किसी भी चीज़ की तुलनाNull
से नहीं कर सकते लेकिनExists
कर सकते हैं। -
जैसे
Exists (Select * from yourtable where bla = 'blabla');
जैसे ही एक हिट मिलती/मिलती है . आप सही/गलत हो जाते हैं . -
इस मामले में
IN
Count(*)
. की स्थिति लेता है सभी . का चयन करने के लिएWHERE
. के आधार पर मेल खाने वाली पंक्तियां क्योंकि यह सभी मूल्यों की तुलना कर रहा है।
लेकिन यह भी न भूलें:
Exists
IN
. के विरुद्ध उच्च गति से निष्पादित होता है :जब सबक्वेरी परिणाम बहुत बड़े हों।IN
EXISTS
. से आगे निकल जाता है :जब सबक्वेरी परिणाम बहुत छोटे हों।
अधिक विवरण के लिए संदर्भ: