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

क्या टेबल कॉलम समान होने पर EXCEPT जॉइन से तेज़ी से निष्पादित होता है?

ऐसा कोई तरीका नहीं है जिससे कोई आपको बता सके कि EXCEPT एक समकक्ष OUTER JOIN . को हमेशा या कभी भी आउट-परफॉर्म नहीं करेगा . ऑप्टिमाइज़र एक उपयुक्त निष्पादन योजना का चयन करेगा चाहे आप अपना इरादा कैसे भी लिखें।

उस ने कहा, यह मेरा दिशानिर्देश है:

EXCEPT का उपयोग करें जब कम से कम एक निम्नलिखित में से सत्य है:

  1. क्वेरी अधिक पठनीय है (यह लगभग हमेशा सत्य होगी)।
  2. प्रदर्शन में सुधार हुआ है।

और दोनों निम्नलिखित में से सत्य हैं:

  1. क्वेरी अर्थ की दृष्टि से समान परिणाम देती है, और आप सभी किनारे के मामलों सहित पर्याप्त प्रतिगमन परीक्षण के माध्यम से इसे प्रदर्शित कर सकते हैं।
  2. प्रदर्शन खराब नहीं होता है (फिर से, सभी किनारे के मामलों में, साथ ही पर्यावरणीय परिवर्तन जैसे बफर पूल को साफ़ करना, आंकड़े अपडेट करना, योजना कैश साफ़ करना, और सेवा को पुनरारंभ करना)।

यह ध्यान रखना महत्वपूर्ण है कि एक समान EXCEPT . लिखना एक चुनौती हो सकती है क्वेरी के रूप में JOIN अधिक जटिल हो जाता है और/या आप कॉलम के हिस्से में डुप्लिकेट पर भरोसा कर रहे हैं लेकिन दूसरों पर नहीं। एक NOT EXISTS लिखना समतुल्य, जबकि EXCEPT . से थोड़ा कम पठनीय पूरा करने के लिए कहीं अधिक तुच्छ होना चाहिए - और अक्सर एक बेहतर योजना की ओर ले जाएगा (लेकिन ध्यान दें कि मैं कभी नहीं कहूंगा ALWAYS या NEVER , जिस तरह से मैंने अभी किया था, उसे छोड़कर)।

इस ब्लॉग पोस्ट में मैं कम से कम एक मामला प्रदर्शित करता हूं जहां EXCEPT एक उचित रूप से निर्मित LEFT OUTER JOIN दोनों द्वारा बेहतर प्रदर्शन किया गया है और निश्चित रूप से एक समकक्ष NOT EXISTS . द्वारा भिन्नता।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. केस सेंसिटिव GROUP BY कैसे करें?

  2. नोड js . में mssql क्वेरी के लिए पैरामीटर कैसे पास करें

  3. SQL सर्वर में आसानी से मास्टर डेटाबेस को फिर से बनाने के तरीके

  4. sqlparameter को IN () में कैसे पास करें?

  5. एसक्यूएल सर्वर (टी-एसक्यूएल उदाहरण) में सभी अविश्वसनीय जांच बाधाओं को कैसे वापस करें