निष्पादन योजना में लापता आँकड़ों के लिए चेतावनी


24

मेरी एक स्थिति है जिसे मैं समझ नहीं सकता। मेरी SQL सर्वर निष्पादन योजना मुझे बताती है कि मेरे पास टेबल पर लापता आंकड़े हैं, लेकिन आँकड़े पहले से ही निर्मित हैं:

चेतावनी

लेकिन अगर हम तालिका को देखें, तो हम देखेंगे कि एक आँकड़ा है जो स्वचालित रूप से बनाया गया है:

यहां छवि विवरण दर्ज करें

क्या कोई यह समझने में मदद कर सकता है कि यह कैसे हो सकता है?

Auto_Update और Auto_Create आँकड़े चालू DB पर चालू होते हैं।

मैं SQL Server 2014 का उपयोग कर रहा हूं।

जवाबों:


15

चेतावनी हमेशा लापता एकल-स्तंभ आंकड़ों के अनुरूप नहीं होती है ।

सटीक आंकड़ा निर्धारित करने का कोई आसान तरीका नहीं है, जिसे ऑप्टिमाइज़र ने खोजा और सभी मामलों में नहीं पाया, लेकिन यह लगभग हमेशा एक बहु-स्तंभ सांख्यिकीय है जो क्वेरी में कई समानता के बारे में कुछ सहसंबंध जानकारी प्रदान करेगा।

शायद आपके मामले में यह फिल्टर के पीछे की भविष्यवाणी के साथ बिल्कुल मेल खाता है, जहां स्कैन दिखाई देता है।

यह अच्छा होगा यदि SQL सर्वर ने 'लापता सांख्यिकी' चेतावनी के लिए सभी स्तंभों की रिपोर्ट की, लेकिन यह आज कैसे काम करता है, दुर्भाग्य से नहीं है।

चेतावनी को हटाने के लिए आपके द्वारा बनाए जाने वाले मल्टी-कॉलम स्टैटिस्टिक की पहचान करने के लिए परीक्षण और त्रुटि की एक निश्चित मात्रा आवश्यक हो सकती है। ध्यान दें कि मल्टी-कॉलम आँकड़े स्वचालित रूप से नहीं बनाए जा सकते हैं। चेतावनी के बावजूद, आपको अनुमान लगाने की गुणवत्ता में सुधार हो सकता है या नहीं मिल सकता है, भले ही लापता सांख्यिकी प्रदान की गई हो।


8

चूंकि यह स्पष्ट लगता है कि किसी विशेष स्तंभ के लिए एक आँकड़ा पहले से मौजूद है, मैं दो संभावनाएँ प्रस्तुत करता हूँ:

  1. ऑब्जेक्ट एक्सप्लोरर एक अलग डेटाबेस को इंगित करता है - मुझे संदेह है क्योंकि डेटाबेस DEVमें नाम है, इसलिए यह संभव है कि एक मामले में आप देव को देख रहे हैं और दूसरे में आप नहीं हैं।
  2. उपयोग की जा रही योजना सांख्यिकीय से पहले बनाई गई थी (या तो इसे पहले उत्पन्न किया गया था या, कम होने की संभावना है, कुछ ने एक recompile को रोका जब आँकड़ा बनाया गया था)।

कृपया पुष्टि करें कि सरल उत्तर (1) मुद्दा नहीं है, और एक ही क्वेरी जारी करने की कोशिश OPTION (RECOMPILE)करें या तो पुष्टि करें या शासन करें (2)।


1
हारून बर्टनंद, आपके उत्तर के लिए बहुत बहुत धन्यवाद। लेकिन ऑब्जेक्ट एक्सप्लोरर को वर्तमान db को इंगित किया गया है और OPTION (RECOMPILE) को जोड़ने से समस्या ठीक नहीं होती है। मैं यह भी जोड़ना चाहता हूं कि मेरी क्वेरी एक संग्रहीत प्रक्रिया निष्पादित कर रही है।
कलाचे खाचरियन

2

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

SET SHOWPLAN_ALL ON

यहां छवि विवरण दर्ज करें

आप देख सकते हैं कि लापता आंकड़े क्या हैं:

यहां छवि विवरण दर्ज करें

और यहां लिपियों का उपयोग करके आप देख सकते हैं कि वर्तमान में कौन से आँकड़े मौजूद हैं, और यदि गायब हैं तो आप उन्हें जोड़ सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.