sql - यूनियन और यूनियन के बीच क्या अंतर है?




union union-all (14)

UNION और UNION ALL बीच क्या अंतर है?


यूनियन और यूनियन के बीच मूल अंतर सभी संघीय संचालन परिणाम सेट से डुप्लिकेट पंक्तियों को समाप्त करता है लेकिन यूनियन सभी शामिल होने के बाद सभी पंक्तियों को वापस कर देता है।

http://zengin.wordpress.com/2007/07/31/union-vs-union-all/


सुनिश्चित नहीं है कि यह कौन सा डेटाबेस मायने रखता है

UNION और UNION ALL को सभी SQL सर्वर पर काम करना चाहिए।

आपको अनावश्यक UNION से बचना चाहिए, वे बड़े प्रदर्शन रिसाव हैं। अंगूठे के नियम के रूप में UNION ALL उपयोग करें यदि आप सुनिश्चित नहीं हैं कि किस का उपयोग करना है।


आप डुप्लीकेट से बच सकते हैं और अभी भी इस तरह की क्वेरी चलाकर यूनियन डिस्टिंट (जो वास्तव में यूनियन के समान है) की तुलना में बहुत तेज़ी से चला सकते हैं:

SELECT * FROM mytable WHERE a=X UNION ALL SELECT * FROM mytable WHERE b=Y AND a!=X

ध्यान दें AND a!=X भाग। यह यूनियन के बाद बहुत तेज़ है।


एक और चीज जिसे मैं जोड़ना चाहता हूं-

संघ : - परिणाम सेट आरोही क्रम में क्रमबद्ध है।

संघ सभी : - परिणाम सेट क्रमबद्ध नहीं है। दो क्वेरी आउटपुट बस संलग्न हो जाता है।


बहुत सरल शब्दों में यूनियन और यूनियन के बीच अंतर यह है कि यूनियन डुप्लिकेट रिकॉर्ड छोड़ देगा जबकि यूनियन सभी में डुप्लिकेट रिकॉर्ड शामिल होंगे।


मान लीजिए कि आपके पास दो टेबल शिक्षक और छात्र हैं

दोनों के पास इस तरह के अलग-अलग नाम के साथ 4 कॉलम हैं

Teacher - ID(int), Name(varchar(50)), Address(varchar(50)), PositionID(varchar(50))

Student- ID(int), Name(varchar(50)), Email(varchar(50)), PositionID(int)

आप उन दो तालिकाओं के लिए यूनियन या यूनियन सभी लागू कर सकते हैं जिनमें कॉलम की संख्या समान है। लेकिन उनके पास अलग-अलग नाम या डेटा प्रकार हैं।

जब आप 2 टेबल पर UNION ऑपरेशन लागू करते हैं, तो यह सभी डुप्लिकेट प्रविष्टियों को उपेक्षा करता है (तालिका में पंक्ति के सभी कॉलम मान किसी अन्य तालिका के समान होते हैं)। इस कदर

SELECT * FROM Student
UNION
SELECT * FROM Teacher

परिणाम होगा

जब आप 2 टेबल पर UNION ALL ऑपरेशन लागू करते हैं, तो यह डुप्लिकेट के साथ सभी प्रविष्टियों को लौटाता है (यदि 2 टेबल में पंक्ति के किसी भी कॉलम मान के बीच कोई अंतर है)। इस कदर

SELECT * FROM Student
UNION ALL
SELECT * FROM Teacher

उत्पादन

प्रदर्शन:

स्पष्ट रूप से यूनियन सभी प्रदर्शन बेहतर है कि यूनियन के रूप में वे डुप्लिकेट मानों को हटाने के लिए अतिरिक्त कार्य करते हैं। आप MSSQL पर प्रेस ctrl + L दबाकर निष्पादन अनुमानित समय से जांच सकते हैं


यदि कोई ORDER BY नहीं है, तो UNION ALL पंक्तियों को वापस ला सकता है, जबकि एक UNION आपको एक बार में पूरा परिणाम देने से पहले क्वेरी के बहुत अंत तक प्रतीक्षा करेगा। इससे समय-समय पर स्थिति में कोई फर्क UNION ALL सकता है - एक UNION ALL कनेक्शन को जीवित रखता है, जैसा कि यह था।

तो यदि आपके पास टाइम-आउट समस्या है, और कोई सॉर्टिंग नहीं है, और डुप्लिकेट कोई समस्या नहीं है, तो UNION ALL उपयोगी हो सकते हैं।


यहां चर्चा के लिए मेरे दो सेंट जोड़ने के लिए: कोई UNION ऑपरेटर को शुद्ध, एसईटी उन्मुख यूनियन के रूप में समझ सकता है - उदाहरण के लिए सेट ए = {2,4,6,8}, सेट बी = {1,2,3, 4}, एक यूनियन बी = {1,2,3,4,6,8}

सेट से निपटने पर, आप नंबर 2 और 4 को दो बार नहीं दिखाना चाहते हैं, क्योंकि एक तत्व या तो सेट में नहीं है या नहीं

एसक्यूएल की दुनिया में, हालांकि, आप दोनों सेटों के सभी तत्वों को एक साथ "बैग" {2,4,6,8,1,2,3,4} में देखना चाहते हैं। और इस उद्देश्य के लिए टी-एसक्यूएल ऑपरेटर UNION ALL प्रदान करता है।


यूनियन अन्य हाथों में डुप्लिकेट रिकॉर्ड हटा देता है यूनियन सभी नहीं करता है। लेकिन किसी को संसाधित होने वाले बड़े पैमाने पर डेटा की जांच करने की आवश्यकता है और कॉलम और डेटा प्रकार समान होना चाहिए।

चूंकि संघ आंतरिक रूप से पंक्तियों का चयन करने के लिए "विशिष्ट" व्यवहार का उपयोग करता है, इसलिए यह समय और प्रदर्शन के मामले में अधिक महंगा है। पसंद

select project_id from t_project
union
select project_id from t_project_contact  

यह मुझे 2020 रिकॉर्ड देता है

दुसरी तरफ

select project_id from t_project
union all
select project_id from t_project_contact

मुझे 17402 से अधिक पंक्तियां देता है

प्राथमिकता परिप्रेक्ष्य दोनों पर समान प्राथमिकता है।


यूनियन और यूनियन दोनों ही दो अलग-अलग एसक्यूएल के परिणाम को जोड़ते हैं। वे डुप्लिकेट को संभालने के तरीके में भिन्न होते हैं।

  • यूनियन किसी भी डुप्लिकेट पंक्तियों को समाप्त करने, परिणाम सेट पर एक DISTINCT करता है।

  • यूनियन सभी डुप्लिकेट को नहीं हटाते हैं, और इसलिए यह यूनियन से तेज़ है।

नोट: इस आदेश का उपयोग करते समय सभी चयनित कॉलमों को एक ही डेटा प्रकार की आवश्यकता होती है।

उदाहरण: यदि हमारे पास दो टेबल हैं, 1) कर्मचारी और 2) ग्राहक

  1. कर्मचारी तालिका डेटा:

  1. ग्राहक तालिका डेटा:

  1. यूनियन उदाहरण (यह सभी डुप्लिकेट रिकॉर्ड हटा देता है):

  1. यूनियन सभी उदाहरण (यह सिर्फ रिकॉर्ड को जोड़ता है, डुप्लीकेट को खत्म नहीं करता है, इसलिए यह यूनियन से तेज़ है):


यूनियन का उपयोग दो तालिकाओं से अलग मूल्यों का चयन करने के लिए किया जाता है, जहां यूनियन का उपयोग सभी मूल्यों का चयन करने के लिए किया जाता है जिसमें टेबल से डुप्लीकेट शामिल हैं


वेन आरेख के साथ समझना अच्छा है।

यहां स्रोत का link है। एक अच्छा विवरण है।


UNION डुप्लीकेट हटा देता है, जबकि UNION ALL नहीं करता है।

डुप्लिकेट को हटाने के लिए परिणाम सेट को सॉर्ट किया जाना चाहिए, और इसका PGA_AGGREGATE_TARGET यूनियन के प्रदर्शन पर असर हो सकता है, क्रमबद्ध डेटा की मात्रा के आधार पर, और विभिन्न आरडीबीएमएस पैरामीटर की सेटिंग्स (ओरेकल PGA_AGGREGATE_TARGET के लिए WORKAREA_SIZE_POLICY=AUTO या यदि WORKAREA_SIZE_POLICY=MANUAL ) SORT_AREA_SIZE और SOR_AREA_RETAINED_SIZE )।

असल में, अगर यह स्मृति में किया जा सकता है तो सॉर्ट तेज़ होता है, लेकिन डेटा की मात्रा के बारे में एक ही चेतावनी लागू होती है।

बेशक, यदि आपको डुप्लीकेट के बिना लौटाए गए डेटा की आवश्यकता है तो आपको अपने डेटा के स्रोत के आधार पर यूनियन का उपयोग करना होगा

मैंने "बहुत कम प्रदर्शनकर्ता" टिप्पणी अर्हता प्राप्त करने के लिए पहली पोस्ट पर टिप्पणी की होगी, लेकिन ऐसा करने के लिए अपर्याप्त प्रतिष्ठा (अंक) है।


UNION दो संरचनात्मक रूप से संगत तालिकाओं की सामग्री को एक संयुक्त तालिका में विलीन करता है।

  • अंतर:

UNION और UNION ALL बीच अंतर यह है कि UNION will डुप्लिकेट रिकॉर्ड छोड़ UNION will जबकि UNION ALL में डुप्लिकेट रिकॉर्ड शामिल होंगे।

Union परिणाम सेट आरोही क्रम में क्रमबद्ध किया गया है जबकि UNION ALL परिणाम सेट को हल नहीं किया गया है

UNION अपने परिणाम सेट पर एक DISTINCT करता है ताकि यह किसी भी डुप्लिकेट पंक्तियों को खत्म कर देगा। जबकि UNION ALL डुप्लिकेट को नहीं हटाएंगे और इसलिए यह UNION से तेज है। *

नोट : UNION ALL का प्रदर्शन आम तौर पर UNION से बेहतर होगा, क्योंकि UNION को सर्वर को किसी भी डुप्लीकेट को हटाने का अतिरिक्त कार्य करने की आवश्यकता होती है। इसलिए, ऐसे मामलों में जहां यह निश्चित है कि कोई डुप्लिकेट नहीं होगा, या जहां डुप्लिकेट समस्या नहीं है, प्रदर्शन कारणों के लिए UNION ALL उपयोग UNION ALL की सिफारिश की जाएगी।





union-all