मैं एक DW डिजाइन करने जा रहा हूं और मैंने भौतिक विचारों के बारे में सुना है। दरअसल मैं एक व्यू बनाना चाहता हूं और बेस टेबल में बदलाव होने पर यह अपने आप अपडेट हो जाना चाहिए। किसी को भी एक उदाहरण के साथ समझा सकते हैं ..
जवाबों:
उन्हें SQL सर्वर में अनुक्रमित दृश्य कहा जाता है - अधिक पृष्ठभूमि के लिए ये श्वेत पत्र पढ़ें:
मूल रूप से, आपको बस इतना करना है:
और आपने कल लिया!
मुश्किल हिस्सा यह है: दृश्य को काफी बाधाओं और सीमाओं को पूरा करना है - जो कि श्वेत पत्र में उल्लिखित हैं। यदि आप ऐसा करते हैं - यही सब कुछ है। दृश्य स्वचालित रूप से अपडेट किया जा रहा है, कोई रखरखाव की आवश्यकता नहीं है।
अतिरिक्त संसाधन:
हालांकि विशुद्ध रूप से इंजीनियरिंग के नजरिए से, अनुक्रमणित दृश्य कुछ ऐसा लगता है जैसे हर कोई प्रदर्शन को बेहतर बनाने के लिए उपयोग कर सकता है लेकिन वास्तविक जीवन परिदृश्य बहुत अलग है। मैं असफल रहा हूँ अनुक्रमित विचारों का उपयोग कर रहा हूँ जहाँ मैं सबसे ज्यादा जरूरत है कि क्या अनुक्रमित किया जा सकता है और क्या नहीं कर सकते हैं पर कई प्रतिबंधों के कारण।
यदि आपके विचारों में बाहरी जोड़ हैं, तो उनका उपयोग नहीं किया जा सकता है। साथ ही, सामान्य टेबल एक्सप्रेशन की अनुमति नहीं है ... वास्तव में यदि आपके पास सबसिलेक्ट्स या व्युत्पन्न टेबल (जैसे कि क्लॉज द्वारा विभाजन के साथ) में कोई आदेश है, तो आप भी भाग्य से बाहर हैं।
अनुक्रमित दृश्यों का उपयोग करने के लिए केवल बहुत ही सरल परिदृश्य छोड़ता है, मेरी राय में कुछ भी अंतर्निहित तालिकाओं पर उचित अनुक्रमित बनाकर अनुकूलित किया जा सकता है।
मैं कुछ वास्तविक जीवन परिदृश्यों को सुनकर रोमांचित हो जाऊंगा जहां लोगों ने वास्तव में अपने लाभ के लिए अनुक्रमित विचारों का उपयोग किया है और उनके बिना नहीं किया जा सकता है
(NOEXPAND)
अनुक्रमित विचारों का उपयोग करने वाले प्रश्नों में संकेत जोड़ने के लिए याद रखने की आवश्यकता है । और फिर आपको अंतर दिखाई देता है। अनुक्रमित दृश्यों बनाम "तालिकाओं को ठीक से अनुक्रमित" का उपयोग करने का लाभ रिकॉर्ड चयन को सीमित करने में है, अन्यथा आप सही हैं, यह समान होगा।
वास्तव में एक भौतिकीकृत दृश्य क्या है, इस पर आपको थोड़ी और पृष्ठभूमि की आवश्यकता हो सकती है। ओरेकल में ये एक ऐसी वस्तु है जिसमें कई तत्व शामिल होते हैं जब आप इसे कहीं और बनाने की कोशिश करते हैं।
एमवीयूई एक अन्य स्रोत से डेटा का स्नैपशॉट है। जब आप दृश्य को स्थानीय रूप से तालिका के रूप में संग्रहीत किया जाता है, तो क्वेरी के अनुसार डेटा नहीं मिलता है। MVView एक पृष्ठभूमि प्रक्रिया का उपयोग करके ताज़ा किया जाता है जो नियमित अंतराल पर बंद होता है या जब स्रोत डेटा बदलता है। ओरेकल पूर्ण या आंशिक रिफ्रेश के लिए अनुमति देता है।
SQL सर्वर में, मैं नियमित रूप से ताज़ा (पूर्ण) मूल एमवीएड बनाने के लिए निम्नलिखित का उपयोग करूंगा।
सबसे पहले, एक दृश्य। यह अधिकांश के लिए आसान होना चाहिए क्योंकि किसी भी डेटाबेस में दृश्य काफी आम हैं अगला, एक तालिका। यह कॉलम और डेटा में दृश्य के समान होना चाहिए। यह दृश्य डेटा का एक स्नैपशॉट संग्रहीत करेगा। फिर, एक प्रक्रिया जो तालिका को काटती है, और दृश्य में वर्तमान डेटा के आधार पर इसे फिर से लोड करती है। अंत में, एक काम जो शुरू करने की प्रक्रिया को ट्रिगर करता है वह है काम।
बाकी सब प्रयोग है।
जब अनुक्रमित दृश्य एक विकल्प नहीं है, और त्वरित अपडेट आवश्यक नहीं हैं, तो आप एक हैक कैश टेबल बना सकते हैं:
select * into cachetablename from myviewname
alter table cachetablename add primary key (columns)
-- OR alter table cachetablename add rid bigint identity primary key
create index...
फिर sp_rename व्यू / टेबल या किसी भी प्रश्न या अन्य विचार को बदल दें जो इसे कैश टेबल पर इंगित करता है।
अनुसूची दैनिक / रात / साप्ताहिक / क्या नहीं जैसा ताज़ा करें
begin transaction
truncate table cachetablename
insert into cachetablename select * from viewname
commit transaction
एनबी: यह आपके टीएक्स लॉग में भी जगह खाएगा। छोटे डेटासेट के लिए सबसे अच्छा उपयोग किया जाता है जो गणना करने में धीमा होता है। शायद "आसान लेकिन बड़े" कॉलम को बाहरी दृश्य में सबसे पहले खत्म करने के लिए रिफ्लेक्टर।
एमएस टी-एसक्यूएल सर्वर के लिए, मैं सुझाव देता हूं कि "शामिल" कथन के साथ एक इंडेक्स बनाएं। विशिष्टता की आवश्यकता नहीं है, न ही एक क्लस्टर सूचकांक के साथ जुड़े डेटा की भौतिक छँटाई है। "सूचकांक ... शामिल करें ()" सिस्टम द्वारा स्वचालित रूप से बनाए रखा गया एक अलग भौतिक डेटा संग्रहण बनाता है। यह वैचारिक रूप से ओरेकल मटेरियल व्यू के समान है।
https://msdn.microsoft.com/en-us/library/ms190806.aspx
https://technet.microsoft.com/en-us/library/ms189607(v=sql.105).aspx