2010-01-25 14 views
35

मैं कुछ इंडेक्स दृश्यों को आजमा रहा हूं और प्रभावित हूं लेकिन मुझे हमेशा अधिकतम या न्यूनतम की आवश्यकता होती है और यह समझ में नहीं आता कि यह इनके साथ क्यों काम नहीं करता है, क्या कोई बता सकता है कि क्यों?अनुक्रमित दृश्यों में MAX() कुल क्यों नहीं हो सकता है?

मुझे पता है कि उन्हें अनुमति नहीं है, मैं बस समझ नहीं पा रहा हूं !!! गणना आदि की अनुमति है क्यों MIN/MAX नहीं, मैं स्पष्टीकरण की तलाश में हूं ...

उत्तर

69

इन समेककों की अनुमति नहीं है क्योंकि उन्हें बदले गए मूल्यों के आधार पर पूरी तरह से पुनः संयोजित नहीं किया जा सकता है।

कुछ समेकित, जैसे COUNT_BIG() या SUM(), केवल उस डेटा को देखकर पुनः संयोजित किया जा सकता है। इन्हें अनुक्रमित दृश्य में अनुमति दी जाती है क्योंकि, यदि अंतर्निहित मूल्य बदलता है, तो उस परिवर्तन के प्रभाव की गणना सीधे की जा सकती है।

अन्य समेकन, जैसे MIN() और MAX(), बदले जा रहे डेटा को देखकर पुनः संयोजित नहीं किया जा सकता है। यदि आप वर्तमान में अधिकतम या न्यूनतम मान को हटाते हैं, तो नए अधिकतम या मिनट को संपूर्ण तालिका में खोज और पाया जाना चाहिए।

एक ही सिद्धांत अन्य समेककों पर लागू होता है, जैसे AVG() या मानक भिन्नता समेकन। एसक्यूएल सिर्फ मूल्यों से बदला नहीं जा सकता है, लेकिन नए मूल्य को पाने के लिए पूरी तालिका को पुनः स्कैन करने की आवश्यकता है।

+0

हां, आपने इसे खींचा! –

+0

यदि आप तालिका को केवल 'डालने' संचालन की अनुमति देने के लिए बाध्य करते हैं, तो 'अपडेट' या' हटाएं 'को अनुमति नहीं दी जा सकती है। (यदि आप उनमें से एक करना चाहते हैं तो आपको अनुक्रमित दृश्य को छोड़ना होगा और बाद में इसे फिर से बनाना होगा।) बहुत सी सारणी केवल व्यावहारिक उपयोग में ही सम्मिलित होती हैं, और 'अधिकतम' को गति देने के तरीके से लाभान्वित होंगी और 'मिनट 'प्रश्न। –

2

अनुक्रमित दृश्यों में MIN/MAX जैसे कुल फ़ंक्शन समर्थित नहीं हैं। दृश्य के आस-पास की क्वेरी में आपको MIN/MAX करना होगा।

अनुक्रमित दृश्य here (SQL 2005) के भीतर क्या है और इसकी अनुमति नहीं है इस पर एक पूर्ण परिभाषा है।
उद्धरण:

एवीजी, मैक्स, मिन, STDEV, STDEVP, वीएआर, या VARP कुल कार्य करता है। औसत (अभिव्यक्ति) प्रश्नों में निर्दिष्ट है, तो अनुक्रमित दृश्य को संदर्भित, अनुकूलक अक्सर जरूरत परिणाम अगर दृश्य सूची का चयन करें SUM (अभिव्यक्ति) और COUNT_BIG (अभिव्यक्ति) शामिल हैं गणना कर सकते हैं। उदाहरण के लिए, अनुक्रमित दृश्य SELECT सूची अभिव्यक्ति AVG (कॉलम 1) नहीं हो सकती है। दृश्य का चयन सूची भाव योग (स्तम्भ 1) और COUNT_BIG (स्तम्भ 1) तो एसक्यूएल सर्वर औसत एक प्रश्न के लिए गणना कर सकते हैं कि संदर्भ देख सकते हैं और निर्दिष्ट करता औसत (स्तम्भ 1)।

4

रीमस द्वारा निर्दिष्ट कारणों के अलावा, MIN और MAX का समर्थन करने के लिए कम व्यावहारिक आवश्यकता है। COUNT() या SUM(), MAX और MIN के विपरीत गणना करने के लिए तेज़ हैं - आप केवल एक लुकअप के बाद सेट हैं; आपको बहुत सारे डेटा पढ़ने की जरूरत नहीं है।

+0

वह व्यक्ति जो डाउनवॉटेड है, क्या आप विस्तारित करना चाहते हैं? –

+7

शायद किसी ऐसे व्यक्ति जिसके पास MIN या MAX की आवश्यकता है। मुझे इस तरह का एक सूचकांक बनाने के लिए एक रास्ता तलाशते हुए यह सवाल मिला, क्योंकि यह मिनटों से सेकंड तक एक प्रश्न लेगा।इसे मैन्युअल रूप से बनाए रखना एकमात्र समाधान है, लेकिन यह एक ऐसा नहीं है जिसे मैं विशेष रूप से पसंद करता हूं ... – jmoreno

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