2009-05-15 12 views
31

क्या कोई टी-एसक्यूएल में SET और SELECT के बीच कार्यात्मक/प्रदर्शन अंतर, यदि कोई हो, की पहचान कर सकता है? मुझे किस स्थिति में एक दूसरे को चुनना चाहिए?सेट बनाम चयन - क्या अंतर है?


अद्यतन:
सब जो प्रतिक्रिया व्यक्त करने के लिए धन्यवाद। जैसा कि कुछ लोगों ने बताया, this लेख Narayana Vyas Kondreddi द्वारा बहुत अच्छी जानकारी है। मैं भी लेख को पढ़ने के बाद शुद्ध अवलोकन और Ryan Farley जो प्रकाश डाला प्रदान करता है द्वारा this सघन संस्करण मिला और सोचा था कि मैं उन्हें साझा होगा:

  1. सेट चर कार्य के लिए एएनएसआई मानक है, का चयन नहीं है।
  2. एसईटी केवल एक चर को पर एक समय असाइन कर सकता है, चयन एक से अधिक असाइनमेंट कर सकता है।
  3. यदि किसी क्वेरी से असाइन करना है, तो SET केवल स्केलर मान असाइन कर सकता है। यदि क्वेरी एकाधिक मान/पंक्तियां देता है तो एसईटी एक त्रुटि उठाएगा। चयन चर करने के लिए में से एक मान असाइन करने और तथ्य यह है कि से अधिक मान लौट रहे थे छुपा देगा (ताकि आप की संभावना कभी पता नहीं होता क्यों कुछ गलत कहीं और जा रहा था - मज़ा समस्या निवारण है कि एक)
  4. जब बताए एक प्रश्न करता है, तो वहाँ कोई मूल्य नहीं तो वापस आ से सेट हो जाएगा असाइन शून्य है, जहां का चयन करें सब पर काम (ताकि चर से यह पिछले मान है परिवर्तित नहीं किया जाएगा)
  5. जहाँ तक गति मतभेद के रूप में नहीं होगा - 01 के बीच कोई प्रत्यक्ष अंतर नहीं हैसेट और चयन करें। हालांकि SELECT की एकाधिक शॉट्स बनाने की क्षमता एक शॉट में इसे थोड़ा सा एसईटी पर गति लाभ देता है।
+0

अच्छा अपडेट; ऑपरेटरों को लगभग 3 वर्षों तक इस्तेमाल कर रहा है लेकिन मतभेदों का एहसास नहीं हुआ – whytheq

उत्तर

24

सेट चर के मान निर्दिष्ट की एएनएसआई मानक तरीका है, और चयन नहीं है। लेकिन आप एक समय में एक से अधिक चर के लिए मान असाइन करने के लिए SELECT का उपयोग कर सकते हैं। एसईटी आपको एक समय में केवल एक चर को डेटा असाइन करने की अनुमति देता है। तो प्रदर्शन में वह जगह है जहां चयन विजेता होगा।

और अधिक विस्तार और उदाहरणों के लिए देखें: Difference between SET and SELECT when assigning values to variables

3

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

कुछ बात

तरह

चयन @ var1 = 1, @ var2 = 2

जहां सेट का उपयोग आप अलग सेट बयानों का उपयोग करने के रूप में (अपने एक मूल्यों को आवंटित करने का एएनएसआई तरीका) यानी

सेट @ var1 = 1

सेट @ var2 = 2

मुझे आशा है कि इस मदद करता है

चियर्स

6

सेट एएनएसआई मानक चर के मान निर्दिष्ट के लिए है।

करें जब कई vairables को मान निर्दिष्ट किया जा सकता है।

अधिक जानकारी के लिए कृपया Narayana Vyas

7

एसक्यूएल सर्वर द्वारा इस विस्तृत पोस्ट पढ़ें: जहां उपयोग करने के लिए एक स्थिति का चयन करते हैं @@ त्रुटि बताए और @@ ROWCOUNT ये वही बयान में सेट करने की आवश्यकता के रूप में है (अन्यथा वे रीसेट हो):

SELECT @error = @@ERROR, @rowcount = @@ROWCOUNT 

(सेट केवल एक ही मूल्य के साथ एक समय में काम करता है)

संबंधित मुद्दे