2010-02-02 13 views
8

मेरे पास डेटा की एक सारणी है जो सप्ताह में एक बार अपडेट हो जाती है। मेरे पास एक प्रश्न है जो इस डेटा को संसाधित करता है और अनिवार्य रूप से कोड की एक सूची और उन कोडों को बुक किए गए घंटों की मात्रा देता है। यह क्वेरी उचित रूप से जटिल है और इसे चलाने में लगभग 5 सेकंड लगते हैं।एसक्यूएल व्यू या टेबल

इस डेटा को डीबी में कई अन्य क्वेरी द्वारा उपयोग करने की आवश्यकता है, इसलिए मैं इसे कहीं और रखना चाहता हूं कि इसे अन्य क्वेरी द्वारा आसानी से एक्सेस किया जा सके। इसे ध्यान में रखते हुए एक अच्छा विचार प्रतीत होता था, लेकिन इसका मतलब यह है कि हर बार इस दृश्य को बुलाया जाता है, यह इस क्वेरी को फिर से चलाएगा, 5 सेकंड ले जाएगा, अगर एक बार में बहुत सी कॉल हैं तो यह कारण बन जाएगा धीमा करने के लिए ऐप।

तो मैं सोच रहा था, क्या सोमवार को डेटा आयात होने पर इस दृश्य को तालिका के रूप में बनाना बेहतर होगा, क्योंकि यह एकमात्र समय होगा। क्या यह सबसे अच्छा विचार है, या क्या मैं इसे गलत तरीके से देख रहा हूं?

+0

यदि आप इसे एक स्पीरेट टेबल में डालते हैं, तो इसे इस्तेमाल करने वाले प्रश्नों को फ़िल्टर करने के लिए इसे भूलना न भूलें। – HLGEM

उत्तर

2

मैं अपनी अधिकांश परियोजनाओं के साथ एक ही मुद्दे से निपटता हूं।

हमारे पास डेटा की भारी मात्रा है जो विभिन्न उद्देश्यों के लिए पुनर्गठित करने की आवश्यकता है। हमें कॉर्पोरेट संस्कृति से भी लाभ होता है जिसका उपयोग नौकरियों और रातोंरात प्रक्रियाओं को बैच करने के लिए किया जाता है, इसलिए उपयोगकर्ता डेटा की स्नैपशॉट प्रकृति के बारे में अच्छी तरह से शिक्षित होते हैं। अधिकांश उपयोगकर्ताओं को Excel में डेटा निर्यात करने वाली पहली चीज़ है, इसलिए यह एक गैर-समस्या है।

अतिरिक्त तालिकाओं का उपयोग करना यहां जाने का एक समझदार तरीका है।

व्यक्तिगत रूप से, मैं अंडरस्कोर के साथ इन तालिकाओं को उपसर्ग करता हूं।

_LargeUsefulData 

यह मैं आसानी से संस्थाओं है कि इस प्रणाली के सामान्य कार्यों में एक सक्रिय भूमिका निभा से सुविधा तालिकाओं की पहचान के लिए अनुमति देता है।

2

इसके बारे में जाने के लिए उचित तरीके की तरह लगता है।

चूंकि क्वेरी महंगी है, परिणाम को "रिपोर्ट" तालिका में डालने के लिए जो अन्य अनुप्रयोगों द्वारा उपयोग किया जाना है, एक अच्छा समझौता की तरह लगता है।

जब तक आप वर्णन करते हैं तो इस डेटा के उपयोगकर्ता इसे बदलने से खुश हैं, आपका दृष्टिकोण ठीक है।

0

आप अभी भी अपनी पंक्तियों को "देख रहे हैं" चाहे वह तालिका में हो या तालिका पंक्तियों के दृश्य में।

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

1

यदि आपकी दृश्य संरचना इसे अनुक्रमित करने की अनुमति देती है, तो आप एक अनुक्रमित दृश्य बना सकते हैं (जो वास्तव में केवल अंतर्निहित तालिकाओं को अपडेट किए जाने पर अपडेट की गई एक प्रतिलिपि है)।

हालांकि, प्रत्येक प्रश्न नहीं, इस पर एक दृश्य अनुक्रमणित करने की अनुमति देता है।

यदि आपका डेटा दूसरे से दूसरे वास्तविक नहीं है, तो तालिका बनाना OK है।

0

हां, यह डेटा वेयरहाउस की दिशा में पहला कदम है :) बेशक आपको यह सुनिश्चित करना चाहिए कि आपकी नई तालिका हमेशा हर साप्ताहिक अपडेट के बाद बनाई जाती है।

3

एक सहकर्मी ने मुझे "भौतिक दृश्य" के लिए इंगित किया।

http://www.pgcon.org/2008/schedule/attachments/64_BSDCan2008-MaterializedViews-paper.pdf

मूल रूप से आप एक तालिका में एक दृश्य से डेटा को कॉपी करके एक दृश्य के रूप में इस तालिका उपयोग करता है। उस प्रस्तुति (लिंक) में बिंदु यह है कि आप उस तालिका के कुछ हिस्सों को अद्यतन करने के लिए ट्रिगर और फ़ंक्शंस के साथ काम कर सकते हैं।

बहुत उपयोगी, मैंने SQL सर्वर में ऐसे भौतिक दृश्य को लागू किया है।

0

मुझे अपने उत्पादन समर्थन में इसी तरह के मुद्दों का सामना करना पड़ा है जहां मुझे एक बड़ा डाटावेयर घर संभालने की आवश्यकता है। असल में, मैंने जो किया था, मैंने शैल स्क्रिप्ट का उपयोग करके टेबल बनाए। शेल स्क्रिप्ट इस तरह से चलती है:

  1. यदि अस्थायी तालिका मौजूद है, तो ड्रॉप करें।
  2. एक मेज के रूप में तालिका एक्स बनाने की तरह है (चयन ....)
  3. उपयोग अस्थायी तालिका और अस्थायी तालिकाओं के रूप में बनाने के बनाने के द्वारा क्वेरी चलाएं/excels।
  4. अगर आप नहीं करते हैं तो अस्थायी तालिका को छोड़ दें या इसे मानें कि यह आपकी डिस्क स्थान नहीं खाएगा।

यह सब एक साधारण शैल स्क्रिप्ट का उपयोग करके किया जा सकता है। मैंने पाया कि यह बहुत उपयोगी है और अब भी यह प्रभावी ढंग से चल रहा है।

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