Track
सेट ऑपरेशंस SQL की बुनियाद बनाते हैं और हमें कई स्रोतों से डेटा को जोड़ने, तुलना करने और फिल्टर करने में सक्षम बनाते हैं। ये ऑपरेशंस डेटा इंटीग्रेशन और क्लीनसिंग से लेकर एडवांस्ड एनालिटिक्स और रिपोर्टिंग तक कई कार्यों के लिए अनिवार्य हैं।
इस ट्यूटोरियल में, हम सीखेंगे कि सेट ऑपरेटर क्या हैं, SQL में इनका उपयोग कैसे होता है, इनके व्यावहारिक अनुप्रयोग, और भी बहुत कुछ! यदि आप एक संपूर्ण SQL लर्निंग संसाधन ढूंढ रहे हैं, तो इस सात-कोर्स वाले SQL Fundamentals स्किल ट्रैक को देखें।
जो पाठक जल्दी में हैं, उनके लिए चलिए एक छोटे से उत्तर से शुरू करते हैं कि SQL में सेट ऑपरेशंस क्या होते हैं।
SQL में सेट ऑपरेशंस क्या हैं?
SQL में सेट ऑपरेशंस दो या अधिक SELECT स्टेटमेंट्स के परिणामों को जोड़ने या तुलना करने की तकनीकें हैं। ये गणितीय सेट ऑपरेशंस की तरह काम करते हैं और हमें अपनी क्वेरीज़ से लौटे पंक्तियों का यूनियन, इंटरसेक्शन या डिफरेंस निकालने देते हैं। इससे वे कई स्रोतों या दृष्टिकोणों से डेटा का विश्लेषण करते समय अनिवार्य हो जाते हैं।
यहाँ मुख्य सेट ऑपरेशंस का संक्षिप्त अवलोकन है:
-
UNION: दो या अधिकSELECTस्टेटमेंट्स से सभी यूनीक पंक्तियाँ मिलाकर डुप्लिकेट हटाता है। -
UNION ALL: दो या अधिकSELECTस्टेटमेंट्स की सभी पंक्तियाँ मिलाता है, डुप्लिकेट बनाए रखता है। -
INTERSECT: केवल वे पंक्तियाँ लौटाता है जो दोनोंSELECTस्टेटमेंट्स में आती हैं। -
EXCEPT: पहलीSELECTस्टेटमेंट की वे पंक्तियाँ लौटाता है जो दूसरी में नहीं आतीं।
रिलेशनल एल्जेब्रा ऑपरेशंस से तुलना
रिलेशनल एल्जेब्रा एक सैद्धांतिक फ्रेमवर्क है जो डेटाबेस क्वेरीज़ को समझने की बुनियाद देता है। यह प्रोजेक्शन, सिलेक्शन और जॉइन जैसे अमूर्त ऑपरेशंस प्रदान करता है, जो गणितीय सिद्धांतों पर आधारित और विशिष्ट डेटाबेस सिस्टम्स से स्वतंत्र होते हैं। इसे हमारे डेटाबेस इंटरैक्शन को शक्ति देने वाली "पर्दे के पीछे" की लॉजिक की तरह समझें।
SQL में सेट ऑपरेटर इन अवधारणाओं का डेटाबेस वातावरण में व्यावहारिक कार्यान्वयन देते हैं। ये हमें SQL क्वेरीज़ के रिज़ल्ट सेट्स पर सीधे यूनियन, इंटरसेक्शन और डिफरेंस जैसे सेट ऑपरेशंस करने देते हैं।
जहाँ रिलेशनल एल्जेब्रा डेटाबेस ऑपरेशंस के लिए औपचारिक बुनियाद देता है, वहीं SQL के सेट ऑपरेटर डेटा मैनिपुलेशन कार्यों के लिए एक मानकीकृत, उपयोगकर्ता-अनुकूल इंटरफेस प्रदान करते हैं।
सेट ऑपरेटर और रिलेशनल एल्जेब्रा ऑपरेशंस के संबंध को समझना SQL की सैद्धांतिक नींव पर अंतर्दृष्टि देता है। इस कड़ी को जानने से आप अंदरूनी प्रक्रियाओं की साफ मानसिक तस्वीर के साथ क्वेरी लिख पाते हैं।
SQL में सेट ऑपरेटर के प्रकार
SQL में तीन प्रमुख सेट ऑपरेटर होते हैं:
-
UNION -
INTERSECT -
EXCEPT(कुछ बोलियों मेंMINUS)
ये ऑपरेटर गणितीय रूप से यूनियन, इंटरसेक्शन और सेट डिफरेंस की अवधारणाओं से मेल खाते हैं।
सेट ऑपरेटर उपयोग करने के नियम
सेट ऑपरेटर के साथ क्वेरीज़ जोड़ने से पहले चार आवश्यकताओं का पूरा होना ज़रूरी है। इनमें से कोई भी गलत हुआ तो आपकी क्वेरी में त्रुटि आ जाएगी।
-
कॉलमों की समान संख्या: प्रत्येक
SELECTसमान संख्या में कॉलम लौटाए। यदि एक क्वेरी तीन और दूसरी दो लौटाती है, तो डेटाबेस त्रुटि देगा। -
अनुकूल डेटा प्रकार: अनुरूप कॉलमों के प्रकार मेल खाने चाहिए। आप एक ही पोज़ीशन पर
VARCHARनाम कॉलम कोINTEGERID के साथ नहीं जोड़ सकते। -
कॉलम क्रम समान: SQL कॉलमों को नाम से नहीं, पोज़ीशन से मैप करता है। पहली क्वेरी का पहला कॉलम दूसरी क्वेरी के पहले कॉलम से मैप होगा, चाहे उनके नाम कुछ भी हों।
-
सिर्फ अंत में
ORDER BY:ORDER BYएक बार, संयुक्त क्वेरी के बिल्कुल अंत में आना चाहिए। इसे व्यक्तिगतSELECTस्टेटमेंट्स के अंदर उपयोग नहीं कर सकते।
एक और बात: आउटपुट में कॉलम नाम पहली SELECT स्टेटमेंट से आते हैं। बाद की क्वेरीज़ के उपनाम (aliases) नज़रअंदाज़ हो जाते हैं, इसलिए यदि आपको कस्टम आउटपुट नाम चाहिए तो उपनाम केवल पहली क्वेरी में जोड़ें।
SQL में UNION ऑपरेटर का उपयोग कैसे करें
UNION ऑपरेटर दो या अधिक SELECT क्वेरीज़ के परिणामों को एक ही रिज़ल्ट सेट में जोड़ता है और डिफ़ॉल्ट रूप से डुप्लिकेट पंक्तियों को हटा देता है।
उदाहरण के लिए, मान लें हमारे पास दो टेबल हैं, employees और contractors, जिनमें समान कॉलम हैं जैसे contractors, department, और salary। सीखने के उद्देश्य से, इन दो डमी टेबल्स पर विचार करें:
employees:
|
name |
department |
salary |
|
Alice |
Marketing |
65000 |
|
Bob |
Sales |
70000 |
|
Carol |
Engineering |
80000 |
|
John |
HR |
55000 |
contractors:
|
name |
department |
salary |
|
David |
Marketing |
60000 |
|
Eva |
Sales |
68000 |
|
Carol |
Engineering |
75000 |
हम दोनों टेबल्स के परिणामों को निम्न कमांड से जोड़ सकते हैं:
-- Using UNION to combine all employees and contractors
SELECT name, department, salary FROM employees
UNION
SELECT name, department, salary FROM contractors;
यह क्वेरी employees और contractors दोनों टेबल्स से name, department, और salary कॉलम चुनती है और उन्हें एक ही रिज़ल्ट सेट में जोड़ती है। UNION ऑपरेटर अंतिम रिज़ल्ट सेट से डुप्लिकेट पंक्तियों को स्वतः हटा देता है।
|
name |
department |
salary |
|
Alice |
Marketing |
65000 |
|
Bob |
Sales |
70000 |
|
Carol |
Engineering |
80000 |
|
John |
HR |
55000 |
|
David |
Marketing |
60000 |
|
Eva |
Sales |
68000 |
ध्यान दें कि कैरोल, जो दोनों टेबल्स में आती है, परिणाम में केवल एक बार सूचीबद्ध है। यदि हम कैरोल की दोनों प्रविष्टियाँ (उसके अलग-अलग वेतन के साथ) रखना चाहें, तो हम UNION ALL का उपयोग करेंगे।
UNION बनाम UNION ALL
UNION ऑपरेटर NULL मानों को नहीं हटाता। यदि किसी एक रिज़ल्ट सेट के कॉलम में NULL मान हैं और दूसरे के अनुरूप कॉलम में non-NULL मान हैं, तो UNION द्वारा बनाए गए अंतिम परिणाम में वे NULL मान बने रहेंगे।
यदि हम रिज़ल्ट सेट में NULL मानों को शामिल रखना चाहें और UNION द्वारा उनके हटने को रोकना चाहें, तो हम UNION ALL का उपयोग कर सकते हैं। यह ऑपरेटर कई SELECT क्वेरीज़ के परिणामों को जोड़ता है और प्रत्येक रिज़ल्ट सेट की सभी पंक्तियाँ, चाहे वे डुप्लिकेट हों या उनमें NULL मान हों, शामिल रखता है।
SQL में INTERSECT ऑपरेटर का उपयोग कैसे करें
INTERSECT ऑपरेटर केवल वे पंक्तियाँ लौटाता है जो दोनों रिज़ल्ट सेट्स में आती हैं। इसे ऐसे समझें जैसे दोनों समूहों में आने वाले लोगों को खोजना।
आइए ऊपर दी गई टेबल्स पर INTERSECT का उपयोग करें। उदाहरण के लिए, केवल name और department कॉलम को क्वेरी करें:
-- Using INTERSECT to find common employees
SELECT name, department FROM employees
INTERSECT
SELECT name, department FROM contractors;
यह क्वेरी employees और contractors दोनों टेबल्स से name और department कॉलम चुनती है और केवल वे पंक्तियाँ लौटाती है जो चुने गए सभी कॉलमों के आधार पर दोनों टेबल्स में मौजूद हैं।
|
name |
department |
|
Carol |
Engineering |
INTERSECT ऑपरेटर NULL मानों को मानक तुलना नियमों के अनुसार हैंडल करता है और अनुरूप कॉलमों की तुलना करते समय NULL मानों को बराबर मानता है। खाली रिज़ल्ट सेट्स के साथ काम करते समय यह एक खाली सेट देता है।
दूसरे शब्दों में, यदि एक रिज़ल्ट सेट में किसी कॉलम में NULL मान है और दूसरे रिज़ल्ट सेट के अनुरूप कॉलम में non-NULL मान है, तो पंक्तियाँ बराबर नहीं मानी जाएँगी — वे इंटरसेक्शन के परिणाम में शामिल नहीं होंगी।
साथ ही, यदि INTERSECT ऑपरेटर को दिए गए रिज़ल्ट सेट्स में से एक खाली है, तो समग्र परिणाम भी खाली होगा। एक खाली सेट और किसी भी अन्य के बीच कोई कॉमन पंक्तियाँ नहीं होतीं।
SQL में UNION ऑपरेटर का उपयोग कैसे करें
EXCEPT ऑपरेटर पहली रिज़ल्ट सेट की वे पंक्तियाँ लौटाता है जो दूसरी में नहीं हैं।
Oracle Database में EXCEPT को MINUS लिखा जाता है; अन्य सभी प्रमुख बोलियाँ (PostgreSQL, SQL Server, MySQL 8.0.31+, SQLite) EXCEPT का उपयोग करती हैं।
उदाहरण के लिए, मान लें हम निम्न क्वेरी चलाते हैं:
-- Using EXCEPT to find employees who are not contractors
SELECT name, department, salary FROM employees
EXCEPT
SELECT name, department, salary FROM contractors;
employees टेबल से name, department, और salary कॉलम चुने जाते हैं और केवल वे पंक्तियाँ लौटती हैं जो contractors टेबल में मौजूद नहीं हैं।
|
name |
department |
salary |
|
Alice |
Marketing |
65000 |
|
Bob |
Sales |
70000 |
|
John |
HR |
55000 |
EXCEPT ऑपरेटर भी NULL मानों को संभालने के लिए मानक तुलना नियमों का पालन करता है। खाली रिज़ल्ट सेट्स के साथ इसका व्यवहार यह है कि यदि पहला रिज़ल्ट सेट खाली है, तो परिणाम भी खाली होगा; और यदि दूसरा रिज़ल्ट सेट खाली है, तो पहले रिज़ल्ट सेट की सभी पंक्तियाँ शामिल होंगी।
SQL सेट ऑपरेटर: परफॉर्मेंस और ऑप्टिमाइज़ेशन
SQL में सेट ऑपरेटरों का क्वेरी परफॉर्मेंस पर प्रभाव, शामिल डाटासेट्स के आकार, क्वेरी की जटिलता और उपयोग किए गए डेटाबेस मैनेजमेंट सिस्टम (DBMS) जैसे कारकों पर निर्भर कर सकता है।
आइए प्रमुख कारकों और ऑप्टिमाइज़ेशन रणनीतियों को समझें।
डेटा वॉल्यूम और क्वेरी की जटिलता
बड़े डेटा के साथ काम करते समय, सेट ऑपरेटर क्वेरी परफॉर्मेंस पर उल्लेखनीय प्रभाव डाल सकते हैं क्योंकि जोड़ने, इंटरसेक्ट करने या तुलना करने के लिए रिज़ल्ट सेट्स का आकार बढ़ने से उस ऑपरेशन के लिए आवश्यक प्रोसेसिंग समय भी बढ़ता है।
कई सबक्वेरीज़, जॉइन्स या सेट ऑपरेटरों वाली जटिल क्वेरीज़ अतिरिक्त प्रोसेसिंग ओवरहेड पैदा कर सकती हैं और परफॉर्मेंस को प्रभावित कर सकती हैं। चेन किए गए या नेस्टेड सेट ऑपरेशंस प्रभाव को और बढ़ा सकते हैं।
इंडेक्सिंग और ऑप्टिमाइज़ेशन तकनीकें
सेट ऑपरेशंस में शामिल कॉलमों की उचित इंडेक्सिंग क्वेरी परफॉर्मेंस को काफी बेहतर कर सकती है। इंडेक्स डेटाबेस इंजन को संबंधित पंक्तियाँ जल्दी खोजने और प्राप्त करने में मदद करते हैं, फुल-टेबल स्कैन की ज़रूरत घटाते हैं और निष्पादन समय सुधारते हैं।
सेट ऑपरेटरों वाली क्वेरीज़ के परफॉर्मेंस को सुधारने के लिए, डेटाबेस एडमिनिस्ट्रेटर और डेवलपर्स क्वेरी री-राइटिंग, एक्ज़ीक्यूशन प्लान विश्लेषण और स्कीमा ऑप्टिमाइज़ेशन जैसी तकनीकें अपना सकते हैं। क्वेरी कैशिंग और मटेरियलाइज़्ड व्यूज़ जैसी तकनीकें भी जटिल क्वेरीज़ के परिणामों को पहले से गणना कर संग्रहित करने में सहायक हैं, जिससे सेट ऑपरेशंस का कम्प्यूटेशनल ओवरहेड घटता है।
डेटाबेस इंजन और हार्डवेयर संसाधन
सेट ऑपरेशंस का परफॉर्मेंस अंतर्निहित डेटाबेस इंजन और उसकी ऑप्टिमाइज़ेशन क्षमताओं पर निर्भर कर सकता है। अलग-अलग DBMS सेट ऑपरेशंस को प्रोसेस करने के लिए भिन्न रणनीतियाँ और एल्गोरिदम अपना सकते हैं, जिससे परफॉर्मेंस में विविधताएँ आती हैं।
CPU, मेमोरी और डिस्क I/O जैसे हार्डवेयर संसाधनों की उपलब्धता भी सेट ऑपरेटरों वाली क्वेरीज़ के परफॉर्मेंस को प्रभावित करती है। पर्याप्त हार्डवेयर संसाधन बॉटलनेक्स कम करने और कुशल क्वेरी निष्पादन सुनिश्चित करने में मदद करते हैं।
व्यवहार में SQL सेट ऑपरेटर
सेट ऑपरेटर केवल सैद्धांतिक उपकरण नहीं हैं; इनके वास्तविक जीवन में ऐसे उपयोग हैं जो व्यावसायिक निर्णयों को प्रभावित कर सकते हैं। चलिए एक सरल उदाहरण से समझते हैं कि कोई कंपनी लक्षित मार्केटिंग अभियानों के लिए अपने ग्राहक आधार को सेगमेंट करने में सेट ऑपरेटरों का कैसे उपयोग कर सकती है।
परिदृश्य
मान लें एक कंपनी ऑनलाइन और फिजिकल स्टोर्स दोनों में बेचती है। उनके पास दो अलग-अलग डाटासेट हैं:
- ऑनलाइन खरीदारी: ऑनलाइन शॉपर्स के लिए ग्राहक ID, खरीद इतिहास, जनसांख्यिकी और लोकेशन।
- इन-स्टोर ट्रांज़ैक्शंस: उन ग्राहकों की समान जानकारी जो व्यक्तिगत रूप से खरीदते हैं।
सेट ऑपरेटरों का उपयोग
सभी ग्राहकों की सम्पूर्ण तस्वीर पाने के लिए, कंपनी पहले UNION का उपयोग करके दोनों डाटासेट्स को एक टेबल में जोड़ेगी, डुप्लिकेट्स हटाते हुए। इससे पूरे ग्राहक आधार का एकीकृत दृश्य मिल जाता है।
इसके बाद वे INTERSECT का उपयोग करके उन ग्राहकों की पहचान कर सकते हैं जिन्होंने ऑनलाइन और स्टोर दोनों में खरीदारी की है। यह सेगमेंट विशेष रूप से मूल्यवान है क्योंकि ये ग्राहक कई चैनलों पर ब्रांड से गहराई से जुड़े हैं।
क्रॉस-चैनल प्रमोशन के अवसर खोजने के लिए कंपनी EXCEPT का उपयोग कर सकती है। उदाहरण के लिए, SELECT * FROM online_purchases EXCEPT SELECT * FROM in_store_transactions उन ग्राहकों को ढूँढेगा जिन्होंने केवल ऑनलाइन खरीदा है, स्टोर में नहीं। कंपनी फिर इन्हें फिजिकल लोकेशन पर आने के लिए प्रोत्साहन दे सकती है।
सेगमेंटेशन से आगे
इन सेगमेंट्स की पहचान होने के बाद, कंपनी इन्हें जनसांख्यिकी या खरीद इतिहास जैसे अतिरिक्त कारकों के आधार पर और परिष्कृत कर सकती है। ग्राहकों की यह सूक्ष्म समझ उन्हें अधिक सटीकता के साथ मार्केटिंग अभियान तैयार करने देती है।
सेट ऑपरेटर बनाम JOINs
सेट ऑपरेटर और SQL JOINs दोनों कई क्वेरीज़ से डेटा जोड़ते हैं, लेकिन इनका काम करने का तरीका अलग है। मूल प्रश्न यह है कि आप पंक्तियाँ जोड़ना चाहते हैं या कॉलम।
| Feature | Set Operators | JOINs |
|---|---|---|
| Combines | Rows (stacks queries vertically) | Columns (widens rows horizontally) |
| Requires | Same column count and compatible data types | A shared key column between tables |
| Use when | Merging similar datasets, finding overlaps or differences between result sets | Enriching a row with related data from another table |
| Duplicate handling | UNION removes duplicates; UNION ALL keeps them |
Depends on join type and the data |
| Types | UNION, UNION ALL, INTERSECT, EXCEPT/MINUS |
INNER, LEFT, RIGHT, FULL OUTER, CROSS |
सेट ऑपरेटरों की सीमाएँ और विचार
SQL में सेट ऑपरेटरों का उपयोग करते समय, कई सीमाएँ और कारक ध्यान में रखना आवश्यक है जो क्वेरी परफॉर्मेंस, परिणाम की सटीकता और समग्र उपयोगिता को प्रभावित कर सकते हैं।
डेटा प्रकार संगतता और NULL मान
रिज़ल्ट सेट्स के अनुरूप कॉलमों के डेटा प्रकार संगत होने चाहिए। क्वेरीज़ जोड़ने से पहले सुनिश्चित करें कि अनुरूप कॉलमों के डेटा प्रकार संगत हैं। टाइप मिसमैच ऐसी त्रुटियाँ पैदा करते हैं जिन्हें नज़रअंदाज़ करना आसान है।
सेट ऑपरेटर NULL मानों को DBMS और विशिष्ट ऑपरेटर के अनुसार अलग तरह से ट्रीट कर सकते हैं। त्रुटियों से बचने के लिए डेवलपर्स को समझना चाहिए कि NULL मानों के साथ व्यवहार कैसा होगा।
परफॉर्मेंस प्रभाव और डुप्लिकेट पंक्तियाँ
सेट ऑपरेशंस क्वेरी परफॉर्मेंस पर काफी प्रभाव डाल सकते हैं, खासकर बड़े या जटिल डाटासेट्स के साथ काम करते समय। इंडेक्सिंग, क्वेरी ऑप्टिमाइज़ेशन और हार्डवेयर संसाधन जैसे कारक परफॉर्मेंस को प्रभावित कर सकते हैं। बॉटलनेक्स को कम करने के लिए ऑप्टिमाइज़ेशन तकनीकें और परफॉर्मेंस-ट्यूनिंग रणनीतियाँ आवश्यक हैं।
डिफ़ॉल्ट रूप से, सेट ऑपरेटर रिज़ल्ट सेट से डुप्लिकेट पंक्तियाँ हटा देते हैं। हालांकि, कुछ स्थितियों में डुप्लिकेट पंक्तियाँ बनाए रखना आवश्यक हो सकता है। डुप्लिकेट्स के संदर्भ में सेट ऑपरेटरों के व्यवहार को समझना और आवश्यकता पड़ने पर उपयुक्त तकनीकों का उपयोग करना महत्वपूर्ण है।
परिणामों का क्रम और मेमोरी बाधाएँ
सेट ऑपरेटर अंतिम आउटपुट में परिणामों के क्रम की गारंटी नहीं देते। संयुक्त परिणाम को सॉर्ट करने के लिए, पूरी क्वेरी के बिल्कुल अंत में, अंतिम SELECT स्टेटमेंट के बाद एक ORDER BY क्लॉज़ जोड़ें।
सेट ऑपरेशंस विशेषकर बड़े डाटासेट्स के साथ काम करते समय पर्याप्त मेमोरी और संसाधन उपभोग कर सकते हैं। परफॉर्मेंस गिरावट या सिस्टम अस्थिरता से बचने के लिए मेमोरी और संसाधन सीमाओं पर ध्यान देना चाहिए।
जटिलता, अनुरक्षण-क्षमता, और क्रॉस-DBMS संगतता
कई सेट ऑपरेटरों, सबक्वेरीज़ और जॉइन्स वाली जटिल क्वेरीज़ को समझना, बनाए रखना और डिबग करना चुनौतीपूर्ण हो सकता है। पठनीयता और अनुरक्षण-क्षमता सुधारने के लिए क्वेरीज़ संक्षिप्त, अच्छी तरह डॉक्यूमेंटेड और मॉड्यूलर होनी चाहिए।
अलग-अलग डेटाबेस मैनेजमेंट सिस्टम्स (DBMSs) में सेट ऑपरेटरों के सिंटैक्स और व्यवहार में भिन्नताएँ हो सकती हैं। क्रॉस-प्लेटफ़ॉर्म संगतता के लिए SQL क्वेरी लिखते समय इन अंतरों को जानना महत्वपूर्ण है।
अंतिम विचार
सेट ऑपरेटर एक विशिष्ट समस्या का समाधान करते हैं: यह जाने बिना रिज़ल्ट सेट्स को जोड़ना या तुलना करना कि कौन-सी पंक्तियाँ ओवरलैप होंगी।
ये UNION, INTERSECT, और EXCEPT को कवर करते हैं: रिज़ल्ट सेट्स को जोड़ने, तुलना करने और घटाने के तीन ऑपरेटर।
यदि आप और सीखना चाहते हैं, तो Joining Data in SQL पर यह कोर्स देखें।
SQL ऑपरेटर FAQs
UNION ALL और UNION में क्या अंतर है?
UNION ALL दोनों क्वेरीज़ की सभी पंक्तियाँ शामिल करता है, भले ही डुप्लिकेट हों। UNION डुप्लिकेट पंक्तियाँ हटा देता है।
SQL में UNION, JOIN से कैसे भिन्न है?
UNION क्वेरी परिणामों को वर्टिकली जोड़ता है, एक क्वेरी की पंक्तियों को दूसरी में जोड़कर। JOIN टेबल्स को हॉरिज़ोंटली जोड़ता है, संबंधित कॉलम के आधार पर पंक्तियों का मिलान कर एक चौड़ा रिज़ल्ट सेट बनाता है।
सेट ऑपरेशंस का उपयोग करते समय क्या परफॉर्मेंस से संबंधित बातें हैं?
सेट ऑपरेशंस कम्प्यूटेशन के लिहाज़ से महंगे हो सकते हैं, खासकर बड़े डाटासेट्स पर। परफॉर्मेंस सुधारने के लिए व्यक्तिगत क्वेरीज़ को ऑप्टिमाइज़ करना और जहाँ संभव हो इंडेक्स का उपयोग करना महत्वपूर्ण है।
EXCEPT और NOT IN में क्या अंतर है?
EXCEPT और NOT IN मिलते-जुलते परिणाम दे सकते हैं, लेकिन NULL मानों के साथ इनका व्यवहार अलग होता है। EXCEPT पंक्तियों की तुलना करते समय अनुरूप कॉलमों में NULL मानों को बराबर मानता है, इसलिए एक ही कॉलम पोज़ीशन में दो NULL होने पर वह पंक्ति बाहर कर दी जाएगी। वहीं NOT IN में यदि सबक्वेरी में कोई भी NULL है, तो SQL में NULL तुलना अनिर्धारित होने के कारण वह कोई पंक्ति नहीं लौटाता। बड़े डाटासेट्स के लिए, एक कॉरिलेटेड NOT IN सबक्वेरी की तुलना में EXCEPT अधिक पठनीय भी हो सकता है।
क्या मैं सेट ऑपरेटरों के साथ ORDER BY का उपयोग कर सकता/सकती हूँ?
हाँ, लेकिन केवल एक बार, पूरी क्वेरी के बिल्कुल अंत में। आप सेट ऑपरेशन के भीतर व्यक्तिगत SELECT स्टेटमेंट्स में ORDER BY का उपयोग नहीं कर सकते। संयुक्त परिणाम को सॉर्ट करने के लिए, अंतिम SELECT स्टेटमेंट के बाद एक ही ORDER BY क्लॉज़ जोड़ें।
उदाहरण:
SELECT name FROM employees
UNION
SELECT name FROM contractors
ORDER BY name ASC;क्या MySQL, INTERSECT और EXCEPT को सपोर्ट करता है?
MySQL ने संस्करण 8.0.31 में INTERSECT और EXCEPT का समर्थन जोड़ा। यदि आप पुराने संस्करण पर हैं, तो आपको इन्हें एमुलेट करना होगा: INTERSECT के लिए INNER JOIN या IN वाली सबक्वेरी, और EXCEPT के लिए LEFT JOIN ... WHERE IS NULL या NOT IN सबक्वेरी का उपयोग करें। Oracle में EXCEPT की जगह MINUS होता है।