मैं यह समझने की कोशिश कर रहा हूं कि सांख्यिकी नमूने कैसे काम करते हैं और नमूना आंकड़ों के अपडेट पर नीचे अपेक्षित व्यवहार है या नहीं।
हमारे पास एक बड़ी तालिका है, जो कि कुछ अरब पंक्तियों के साथ विभाजित है। विभाजन की तारीख पूर्व व्यापार की तारीख है और इसलिए एक आरोही कुंजी है। हम केवल पहले दिन के लिए इस तालिका में डेटा लोड करते हैं।
डेटा लोड रात भर चलता है, इसलिए शुक्रवार 8 अप्रैल को हमने 7 वें के लिए डेटा लोड किया।
प्रत्येक रन के बाद हम आंकड़े अपडेट करते हैं, हालांकि एक के बजाय एक नमूना लेते हैं FULLSCAN
।
हो सकता है कि मैं भोला हूँ, लेकिन मुझे उम्मीद थी कि SQL सर्वर रेंज में उच्चतम कुंजी और निम्नतम कुंजी की पहचान करेगा ताकि यह सुनिश्चित हो सके कि यह एक सटीक नमूना है। इस लेख के अनुसार :
पहली बाल्टी के लिए, निचली सीमा उस स्तंभ का सबसे छोटा मूल्य है जिस पर हिस्टोग्राम उत्पन्न होता है।
हालाँकि, इसमें अंतिम बाल्टी / सबसे बड़े मूल्य का उल्लेख नहीं है।
8 वीं की सुबह के नमूने के अद्यतन के साथ, नमूना तालिका (7 वें) में उच्चतम मूल्य से चूक गया।
जैसा कि हम पहले दिन के डेटा पर बहुत अधिक क्वेरी करते हैं, इसके परिणामस्वरूप त्रुटिपूर्ण कार्डिनैलिटी का अनुमान और कई प्रश्न निकलते हैं।
SQL सर्वर को उस कुंजी के लिए उच्चतम मान की पहचान नहीं करनी चाहिए और उसे अधिकतम के रूप में उपयोग करना चाहिए RANGE_HI_KEY
? या क्या यह बिना उपयोग के अपडेट की सीमाओं में से एक है FULLSCAN
?
संस्करण SQL सर्वर 2012 SP2-CU7। हम वर्तमान OPENQUERY
में SP3 में व्यवहार में परिवर्तन के कारण अपग्रेड नहीं कर सकते हैं जो SQL सर्वर और Oracle के बीच एक लिंक किए गए सर्वर क्वेरी में संख्याओं को कम कर रहा था।