जो का लिंक एक अच्छा प्रारंभिक बिंदु है। क्वास्नोई ने इसे भी शामिल किया है।
सामान्य तौर पर, यदि आपके फ़ील्ड ठीक से अनुक्रमित हैं, या यदि आप अधिक रिकॉर्ड फ़िल्टर करने की अपेक्षा करते हैं (अर्थात बहुत सारी पंक्तियाँ हैं EXIST सबक्वेरी में) NOT EXISTS बेहतर प्रदर्शन करेंगे।
EXISTS और NOT EXISTS दोनों शॉर्ट सर्किट - जैसे ही कोई रिकॉर्ड उस मानदंड से मेल खाता है जिसे या तो शामिल किया गया है या फ़िल्टर किया गया है और ऑप्टिमाइज़र अगले रिकॉर्ड पर चला जाता है।
LEFT JOIN सभी रिकॉर्ड में शामिल होंगे भले ही वे मेल खाते हों या नहीं, फिर सभी मेल न खाने वाले रिकॉर्ड्स को फ़िल्टर कर दें। अगर आपकी टेबल बड़ी हैं और/या आपके पास एक से अधिक JOIN हैं मानदंड, यह बहुत अधिक संसाधन गहन हो सकता है।
मैं आमतौर पर NOT EXISTS . का उपयोग करने का प्रयास करता हूं और EXISTS जहां संभव। SQL सर्वर के लिए, IN और NOT IN शब्दार्थ समकक्ष हैं और लिखना आसान हो सकता है। ये केवल उन ऑपरेटरों में से हैं जो आपको SQL सर्वर में मिलेंगे जो शॉर्ट सर्किट की गारंटी है।