SQL में, उन पंक्तियों का चयन करना जो एक तालिका में मौजूद हैं लेकिन दूसरे में नहीं हैं, "NOT IN" का उपयोग करके प्राप्त किया जा सकता है ऑपरेटर. हालाँकि, यह दृष्टिकोण कभी-कभी बड़े डेटासेट के लिए प्रदर्शन समस्याओं का कारण बन सकता है।
ऐसे परिदृश्य पर विचार करें जहां आपके पास एक ही प्राथमिक कुंजी के साथ दो टेबल, ए और बी हैं। A से उन सभी पंक्तियों का चयन करने के लिए जो B में मौजूद नहीं हैं, आप निम्न क्वेरी का उपयोग कर सकते हैं:
SELECT *
FROM A
WHERE NOT EXISTS (
SELECT *
FROM B
WHERE A.pk = B.pk
);
जबकि यह क्वेरी काम करती है, यह अक्षम हो सकती है, खासकर बड़ी तालिकाओं के लिए। डेटाबेस को ए में प्रत्येक पंक्ति के लिए एक नेस्टेड क्वेरी निष्पादित करनी होगी, बी में इसकी उपस्थिति की जांच करनी होगी।
एक बेहतर तरीका लेफ्ट जॉइन का उपयोग करना और शून्य मानों के आधार पर परिणामों को फ़िल्टर करना है। इस विधि में ए और बी को एक सामान्य कॉलम पर जोड़ना और फिर ए से पंक्तियों का चयन करना शामिल है जहां बी में संबंधित कॉलम शून्य है:
SELECT A.*
FROM A
LEFT JOIN B
ON A.x = B.y
WHERE B.y IS NULL;
यह क्वेरी एकल जॉइन ऑपरेशन करती है और B में मान की अनुपस्थिति के आधार पर परिणामों को फ़िल्टर करती है। यह आमतौर पर बड़े डेटासेट के लिए "NOT IN" दृष्टिकोण से तेज़ है।
वैकल्पिक रूप से, आप WHERE क्लॉज में एक सबक्वेरी का उपयोग कर सकते हैं:
SELECT A.*
FROM A
WHERE x NOT IN (
SELECT y
FROM B
);
यह दृष्टिकोण बड़े डेटासेट के लिए भी अच्छा प्रदर्शन प्रदान कर सकता है।
अंततः, क्वेरी को अनुकूलित करने का सबसे अच्छा तरीका विशिष्ट डेटा और डेटाबेस कॉन्फ़िगरेशन पर निर्भर करता है। विभिन्न तरीकों का परीक्षण करने और वह तरीका चुनने की अनुशंसा की जाती है जो आपकी क्वेरी के लिए इष्टतम प्रदर्शन प्रदान करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3