कोई संक्षिप्त उत्तर है। यह पूरी तरह से आपके डेटा पर निर्भर करता है और आप इसका उपयोग कैसे करते हैं। यहां कुछ बातें ध्यान देने योग्य हैं:
जैसा कि @NullUserException ने बताया, आंकड़े स्वचालित रूप से एकत्र होते हैं, आमतौर पर हर रात। यह आमतौर पर काफी अच्छा है; अधिकांश (OLTP) वातावरण में, यदि आपने अभी नई ऑब्जेक्ट्स जोड़े हैं तो आंकड़े स्वचालित रूप से एकत्र होने से पहले उनमें बहुत अधिक डेटा नहीं होगा। योजनाएं खराब नहीं होंगी, और यदि वस्तुएं नई हैं तो शायद उन्हें तुरंत उपयोग नहीं किया जाएगा। "Oracle Database now automatically collects statistics during index creation and rebuild".
एक कॉलम शामिल नहीं। - - हो सकता है कि
- एक नया सूचकांक का निर्माण। यदि कॉलम का उपयोग जुड़ने और भविष्यवाणी में किया जाएगा तो आप शायद इसके आंकड़े चाहते हैं। यदि इसका उपयोग डेटा को संग्रहीत करने और प्रदर्शित करने के लिए किया जाता है तो यह वास्तव में किसी भी योजना को प्रभावित नहीं करेगा। लेकिन, यदि नया कॉलम बहुत अधिक जगह लेता है तो यह औसत पंक्ति लंबाई, ब्लॉक की संख्या, पंक्ति श्रृंखला, आदि में महत्वपूर्ण रूप से बदल सकता है, और अनुकूलक को इसके बारे में पता होना चाहिए।
- एक नई तालिका बनाना - शायद। ओरेकल dynamic sampling के माध्यम से लापता आंकड़ों की क्षतिपूर्ति करने में सक्षम है, हालांकि यह अक्सर पर्याप्त नहीं है। विशेष रूप से यदि नई तालिका में बहुत अधिक डेटा है; खराब आंकड़े लगभग हमेशा कार्डिनालिटी के अनुमान लगाते हैं, जिससे आप हेश में शामिल होने पर नेस्टेड लूप का नेतृत्व करेंगे। साथ ही, यदि तालिका डेटा नहीं बदला गया है, तो भी आपको हिस्टोग्राम सक्षम करने के लिए आंकड़ों को इकट्ठा करने की आवश्यकता हो सकती है। डिफ़ॉल्ट रूप से, ओरेकल skewed डेटा के लिए हिस्टोग्राम बनाता है, लेकिन उन स्तंभों को भविष्यवाणी के रूप में उपयोग नहीं किया गया है, तो उन हिस्टोग्राम सक्षम नहीं होगा। (इसलिए यह एक नया कॉलम जोड़ने के लिए भी लागू होता है)। यदि आप एक ही नाम के साथ एक तालिका को छोड़कर दोबारा बनाते हैं, तो ओरेकल उस कॉलम उपयोग डेटा में से किसी भी को बनाए रखेगा, और यह नहीं पता होगा कि आपको कुछ कॉलम पर हिस्टोग्राम की आवश्यकता है।
अनुकूलक आंकड़ों को इकट्ठा करना ज्यादातर लोगों के एहसास से कहीं अधिक कठिन है। मेरे वर्तमान काम पर, हमारी अधिकांश प्रदर्शन समस्याएं अंततः खराब आंकड़ों के कारण होती हैं। यदि आप अपने सिस्टम के लिए योजना के साथ आने की कोशिश कर रहे हैं तो आपको Managing Optimizer Statistics chapter पढ़ना चाहिए।
अद्यतन:
खाली वस्तुओं के लिए आंकड़े एकत्र करने की कोई जरूरत नहीं है; गतिशील नमूना डेटा शब्दकोश से आंकड़े पढ़ने के तुरंत बाद काम करेगा। (एक त्वरित परीक्षण के आधार पर आंकड़ों के साथ और बिना किसी बड़ी संख्या में प्रश्नों को पार्स करना।) यदि आप गतिशील नमूनाकरण को अक्षम करते हैं तो कुछ अजीब मामले हो सकते हैं जहां ओरेकल डिफ़ॉल्ट मान गलत योजनाओं का कारण बनते हैं, और आप आंकड़ों के साथ बेहतर होंगे एक खाली टेबल
मुझे लगता है कि निर्माण समय पर ओरेकल स्वचालित रूप से इंडेक्स के आंकड़े एकत्रित करता है क्योंकि इसका अधिक खर्च नहीं होता है। जब आप एक इंडेक्स बनाते हैं तो आपको टेबल में सभी ब्लॉक पढ़ना पड़ता है, इसलिए ओरेकल एक ही समय में स्तर, ब्लॉक, चाबियाँ इत्यादि की संख्या की गणना कर सकता है।
तालिका आंकड़े अधिक जटिल हो सकते हैं, और डेटा के एकाधिक पास की आवश्यकता हो सकती है। एक इंडेक्स बनाना मनमाने ढंग से एसक्यूएल की तुलना में अपेक्षाकृत सरल है जिसे एक बिल्ड-टेबल-ए-सिलेक्ट के हिस्से के रूप में उपयोग किया जा सकता है। यह उन मनमानी एसक्यूएल कथनों को लेने और उन्हें एक प्रश्न में बदलने के लिए संभव, या कुशल नहीं हो सकता है जो आंकड़ों को इकट्ठा करने के लिए आवश्यक जानकारी देता है।
बेशक इसे खाली तालिका के आंकड़े इकट्ठा करने के लिए अतिरिक्त खर्च नहीं होगा। लेकिन यह आपको कुछ भी हासिल नहीं करता है, और यह किसी भी व्यक्ति के लिए भ्रामक होगा जो USER_TABLES.LAST_ANALYZED को देखता है - तालिका का विश्लेषण किया जा रहा है, लेकिन किसी भी सार्थक डेटा के साथ नहीं।
स्रोत
2011-09-03 05:22:45
http://dba.stackexchange.com/ –