दिलचस्प पोस्ट
त्रुटि: xxx डिस्क्वार्ड क्वालिफायर के 'यह' तर्क के रूप में XXX पास करना कैसे MFMailComposeViewController दिखाए बिना iPhone अनुप्रयोग से मेल भेजने के लिए? मॉडल डायलॉग कीबोर्ड काट नहीं करता है Python 2.7.3 के साथ 64 बिट विंडोज 7 पर नुकीले स्थापित पैरामीटर के रूप में जावास्क्रिप्ट फ़ंक्शन पास करें क्या HTML5 में अपना खुद का html टैग बनाने का एक तरीका है? git अपवाद की अनदेखी करें एसक्यूएल और माइस्क्ल के बीच क्या अंतर है बूटस्ट्रैप हिंडोला छवि ठीक से संरेखित नहीं है व्यावहारिक Zend_ACL + Zend_Auth कार्यान्वयन और सर्वोत्तम अभ्यास डबल साझा किए गए विकल्प नहीं डाल सकते लंबे समय से सी / सी ++ स्विफ्ट संकलन का समय इतनी धीमी क्यों है? निर्भरता वाकर: लापता डीएलएलएस किसी ObjectOutputStream को जोड़ना

एसकेएल ग्रुप बनाम अलग से

क्वेरी में किए गए कोई एग्रीग्यूशन नहीं होने पर किसी ने एक समूह को बनाम बनाकर क्यों अलग किया होगा?

साथ ही, किसी को समूह को MySQL और SQL सर्वर में बनाम अलग-अलग प्रदर्शन विचारों से पता है मैं अनुमान लगाता हूं कि SQL सर्वर का एक बेहतर अनुकूलक है और वे वहां के बराबर हो सकते हैं, लेकिन MySQL में, मुझे उम्मीद है कि एक महत्वपूर्ण प्रदर्शन लाभ अलग-अलग होगा

मुझे डीबीए उत्तर में दिलचस्पी है

संपादित करें:

बिल का पोस्ट दिलचस्प है, लेकिन लागू नहीं है। मुझे ज्यादा केंद्रित होना चाहिए…

select a, b, c from table x group by a, b,c 

बनाम

 select distinct a,b,c from table x 

Solutions Collecting From Web of "एसकेएल ग्रुप बनाम अलग से"

एमएस एसक्यूएल सर्वर से थोड़ा (बहुत कम) प्रायोगिक डेटा, हमारे डीबी से यादृच्छिक तालिकाओं पर कुछ।

पैटर्न के लिए:

 SELECT col1, col2 FROM table GROUP BY col1, col2 

तथा

 SELECT DISTINCT col1, col2 FROM table 

जब क्वेरी के लिए कोई कवर सूचकांक नहीं है, तो दोनों तरीके निम्नलिखित क्वेरी योजना का उत्पादन करते हैं:

 |--Sort(DISTINCT ORDER BY:([table].[col1] ASC, [table].[col2] ASC)) |--Clustered Index Scan(OBJECT:([db].[dbo].[table].[IX_some_index])) 

और जब एक कवर सूचकांक था, दोनों का उत्पादन किया:

 |--Stream Aggregate(GROUP BY:([table].[col1], [table].[col2])) |--Index Scan(OBJECT:([db].[dbo].[table].[IX_some_index]), ORDERED FORWARD) 

इसलिए बहुत छोटा नमूना SQL सर्वर से निश्चित रूप से दोनों एक ही व्यवहार करता है।

GROUP BY पंक्तियों के समूह को एक पंक्ति में, विशिष्ट कॉलम में प्रति विशिष्ट मूल्य के अनुसार, जो कि चयन सूची में भी जरूरी नहीं है

 SELECT b, c, d FROM table1 GROUP BY a; 

यह क्वेरी कानूनी एसक्यूएल है ( सुधार: केवल MySQL में; वास्तव में यह मानक एसक्यूएल नहीं है और अन्य ब्रांडों द्वारा समर्थित नहीं है) MySQL इसे स्वीकार करता है, और यह विश्वास करता है कि आप जानते हैं कि आप क्या कर रहे हैं, b , c , और d को एक स्पष्ट तरीके से चुनते हैं क्योंकि वे a कार्यात्मक निर्भरता हैं

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

जबकि DISTINCT हमेशा चयन-सूची में सभी कॉलमों को दिखता है, और केवल उन्हीं स्तंभों में। यह एक सामान्य गलत धारणा है कि DISTINCT आपको कॉलम निर्दिष्ट करने की अनुमति देता है:

 SELECT DISTINCT(a), b, c FROM table1; 

कोष्ठक बनाने के बावजूद फ़ंक्शन कॉल की तरह DISTINCT दिखते हैं, ऐसा नहीं है। यह एक क्वेरी विकल्प है और चयन-सूची के तीन क्षेत्रों में से एक विशिष्ट मान क्वेरी परिणाम में एक अलग पंक्ति तक पहुंच जाएगा। इस चयन-सूची में एक अभिव्यक्ति के चारों ओर कोष्ठक है, लेकिन यह परिणाम को प्रभावित नहीं करेगा

MySQL में मैं एक ग्रुप BY का उपयोग करते हुए पाया है कि DISTINCT की तुलना में प्रदर्शन में अक्सर बेहतर होता है।

"एक्सप्लान चयन निकाय" करना "जहां का उपयोग करना है, अस्थायी का उपयोग करना" दिखाता है MySQL एक अस्थायी तालिका बना देगा

बनाम "एक्सप्लिन सेलेक्ट ए, बी, सी टी 1, टी 2 से, जहां टी 2 ए। ए = टी 1। ए ग्रुप द्वारा" बस से पता चलता है "का उपयोग करना"

दोनों एमएस एसक्यूएल सर्वर में एक ही क्वेरी प्लान उत्पन्न करेंगे …. यदि आपके पास एमएस एसक्यूएल सर्वर है तो आप वास्तविक निष्पादन योजना को सक्षम करने के लिए केवल अपनी आवश्यकताओं के लिए कौन सा बेहतर है, यह सक्षम कर सकते हैं …

कृपया उन पदों पर एक नज़र डालें:

http://blog.sqlauthority.com/2007/03/29/sql-server-difference-between-distinct-and-group-by-distinct-vs-group-by/

http://www.sqlmag.com/Article/ArticleID/24282/sql_server_24282.html

अगर आप वास्तव में अलग-अलग मानों की तलाश कर रहे हैं, तो अलग-अलग स्रोत कोड को अधिक पठनीय बनाता है (जैसे कि यह एक संग्रहीत कार्यविधि का हिस्सा है) अगर मैं अस्थायी प्रश्नों को लिख रहा हूं तो मैं आम तौर पर समूह के साथ शुरू करूंगा, भले ही मेरे पास कोई एग्रीग्यूशन नहीं क्योंकि मैं अक्सर इन्हें डालने के लिए समाप्त कर दूँगा