मुझे कई लाखों पंक्तियों के साथ एक तालिका मिली है, जिसमें मुझे समय-समय पर कुछ प्रश्नों को चलाने की आवश्यकता है। पहली क्वेरी आमतौर पर काफी धीमी (लगभग 10s), और बाद की क्वेरी आमतौर पर तेजी से (लगभग 1s) होती है। कुछ घंटों के बाद, एक धीमी / फिर तेजी से चक्र फिर से शुरू होता है।
मैंने अपनी निष्पादन योजना में जांच की है कि सभी आवश्यक सूचकांक मौजूद थे और उचित रूप से उपयोग किए गए थे, और मुझे लगता है कि प्रदर्शन अंतर इस तथ्य के कारण है कि सूचकांक वास्तव में बाद के प्रश्नों के लिए स्मृति में हैं (मैं सही हूं, या अन्य हैं संभावित कारण?)
मैं अनुक्रमणिका के साथ-साथ कई अन्य प्रश्नों का भी उपयोग कर रहा हूं, लेकिन वे प्रश्न कम समय लेने वाले हैं और उनका प्रदर्शन कम महत्वपूर्ण है, इसलिए मैं चिंतित हूं कि उन सूचकांक वास्तव में मेरे महत्वपूर्ण सूचकांक को मेमोरी कैश से बाहर धकेल रहे हैं।
स्पष्ट 'अतिरिक्त रैम जोड़ें' फिक्स के अलावा, मैं डमी क्वेरियों को स्क्रिप्ट करने के बारे में सोच रहा हूं ताकि सूचकांक को वापस स्मृति में लाने के लिए हर घंटे चला जा सके।
क्या ऐसा करने का एक और अधिक सुरुचिपूर्ण तरीका है? SQLServer को संकेत देने के तरीके के समान है कि यदि केवल एक ही इंडेक्स को कैश रखने के लिए पर्याप्त मेमोरी है, तो यह एक होना चाहिए?
मुझे पता है कि आमतौर पर सबसे अच्छी बात यह है कि इस तरह की चीजों के संबंध में विच SQLServer को गड़बड़ाना नहीं है, लेकिन मेरी क्वेरी की असामान्य प्रकृति (बहुत कम ही चलती है, लेकिन समय-महत्वपूर्ण) मेरा मानना है कि यह समझ में आता है (यदि संभव हो तो) ।
मैं यह जानने के लिए भी उत्सुक हूं कि क्या यह जानने का कोई तरीका है कि किसी निश्चित समय में कौन से इंडेक्स मेमोरी में कैश्ड हैं?