SQL सर्वर क्वेरी में NOCOUNT
बंद करने के फायदे और नुकसान क्या हैं? SQL सर्वर क्वेरी में NOCOUNT बंद करने के फायदे और नुकसान क्या हैं?
उत्तर
एसक्यूएल बोल से:
सेट NOCOUNT पर एक संग्रहीत प्रक्रिया में प्रत्येक कथन के लिए ग्राहक को DONE_IN_PROC संदेश भेजने से बचाता है। संग्रहित प्रक्रियाओं कि कई बयान है कि नहीं वापसी ज्यादा वास्तविक डेटा करना शामिल के लिए, सेटिंग चालू पर NOCOUNT सेट, एक महत्वपूर्ण प्रदर्शन को बढ़ावा देने प्रदान कर सकते हैं क्योंकि नेटवर्क यातायात बहुत कम है।
अधिक जानकारी के लिए http://msdn.microsoft.com/en-us/library/ms189837.aspx देखें।
इसके अलावा, SQLServerCentral पर इस लेख इस विषय पर बहुत अच्छा है:
Performance Effects of NOCOUNT
और यह सिर्फ नेटवर्क यातायात कि कम हो जाता है नहीं है। SQL सर्वर के लिए एक बूस्ट आंतरिक है क्योंकि निष्कर्ष निकालने के लिए निष्पादन योजना को अतिरिक्त क्वेरी में कमी के कारण अनुकूलित किया जा सकता है कि कितनी पंक्तियां प्रभावित हुईं।
यह केवल उस संदेश को रोकता है जो भेजने/प्रदर्शित होने के लिए प्रभावित पंक्तियों की # दिखाता है, जो प्रदर्शन लाभ प्रदान करता है, खासकर यदि आपके पास कई बयान हैं जो संदेश वापस कर देंगे। यह प्रदर्शन में सुधार करता है क्योंकि नेटवर्क पर कम डेटा भेजा जा रहा है (एसक्यूएल सर्वर और फ्रंट एंड के बीच)।
अधिक बोल पर: SET NOCOUNT
मैं हमेशा यह उपरोक्त कारणों के लिए चालू पर सेट है, लेकिन 1 से अधिक परिणाम आपके proc में स्थापित कर दें तो आप है यह हो सकता गंदगी ग्राहक कोड
मैं व्यक्तिगत रूप से की तरह NOCOUNT को मैन्युअल फ़ैशन में चलाने के लिए और Print
कथन को आउटपुट डीबगिंग संदेशों के लिए उपयोग करने के लिए चालू करने के लिए। इस तरह, अपने उत्पादन कम दिखाई देगा:
Updating usernames (287 rows updated) Done Updating passwords (287 rows updated) Done Doing the next thing (1127 rows updated) Done
और
अधिक की तरहUpdating usernames Done Updating passwords Done Doing the next thing Done
आप अद्यतन कर रहे हैं क्या की संवेदनशीलता पर निर्भर करता है, कभी कभी यह मायने रखता है शामिल करने के लिए उपयोगी है; हालांकि, बहुत सारे आउटपुट के साथ जटिल स्क्रिप्ट के लिए मैं आमतौर पर उन्हें छोड़ना पसंद करता हूं।
सेट NOCOUNT पर एक oneline वक्तव्य है, Sql सर्वर client.this हर प्रक्रिया (यानी .. का चयन करें, सम्मिलित करें, अद्यतन, हटाने) के लिए किया जाता है करने के लिए वापस संदेश भेजता है।यदि आप इस संदेश से बचने के हम अपने डाटाबेस के लिए समग्र प्रदर्शन में सुधार कर सकते हैं और यह भी नेटवर्क यातायात
को कम पूर्व के लिए:
घोषित @a तालिका (आईडी int)
सेट nocount पर
सम्मिलित @ एक 1 संघ का चयन 2
सेट बंद nocount
संदेश एक ट्रांस से प्रभावित पंक्तियों की संख्या का संकेत रोकता चयन परिणाम-भाग के रूप में वापस आने से कार्य-एसक्यूएल कथन।
यह * विशेष रूप से * कर्सर का उपयोग करने वाले प्रश्नों में अनिवार्य है। –