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

LEFT OUTER JOIN बनाम NOT EXISTS पर SQL प्रदर्शन

जो का लिंक एक अच्छा प्रारंभिक बिंदु है। क्वास्नोई ने इसे भी शामिल किया है।

सामान्य तौर पर, यदि आपके फ़ील्ड ठीक से अनुक्रमित हैं, या यदि आप अधिक रिकॉर्ड फ़िल्टर करने की अपेक्षा करते हैं (अर्थात बहुत सारी पंक्तियाँ हैं EXIST सबक्वेरी में) NOT EXISTS बेहतर प्रदर्शन करेंगे।

EXISTS और NOT EXISTS दोनों शॉर्ट सर्किट - जैसे ही कोई रिकॉर्ड उस मानदंड से मेल खाता है जिसे या तो शामिल किया गया है या फ़िल्टर किया गया है और ऑप्टिमाइज़र अगले रिकॉर्ड पर चला जाता है।

LEFT JOIN सभी रिकॉर्ड में शामिल होंगे भले ही वे मेल खाते हों या नहीं, फिर सभी मेल न खाने वाले रिकॉर्ड्स को फ़िल्टर कर दें। अगर आपकी टेबल बड़ी हैं और/या आपके पास एक से अधिक JOIN हैं मानदंड, यह बहुत अधिक संसाधन गहन हो सकता है।

मैं आमतौर पर NOT EXISTS . का उपयोग करने का प्रयास करता हूं और EXISTS जहां संभव। SQL सर्वर के लिए, IN और NOT IN शब्दार्थ समकक्ष हैं और लिखना आसान हो सकता है। ये केवल उन ऑपरेटरों में से हैं जो आपको SQL सर्वर में मिलेंगे जो शॉर्ट सर्किट की गारंटी है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर डेटाबेस स्नैपशॉट -4

  2. SQL सर्वर CPU प्रदर्शन समस्याओं का निवारण

  3. SQL सर्वर में विदेशी कुंजी निर्भरता कैसे खोजें?

  4. केवल संख्यात्मक कॉलम मान कैसे प्राप्त करें?

  5. SQL सर्वर प्रबंधन स्टूडियो (SSMS) में रंग और फ़ॉन्ट कैसे बदलें - SQL सर्वर / TSQL ट्यूटोरियल भाग 12