मेरे पास लॉग और लॉगइटेम टेबल हैं; मैं दोनों से कुछ डेटा पकड़ने के लिए एक प्रश्न लिख रहा हूँ। Logs
के हजारों रहे हैं और प्रत्येकइस नए इंडेक्स को प्रदर्शन में इतना सुधार क्यों हुआ जब मौजूदा इंडेक्स में नए इंडेक्स में सभी कॉलम शामिल थे?
हो सकता है सवाल में क्वेरी इतना जटिल है कि मैं यह कर रहा हूँ लंघन (अगर कोई सोचता है कि यह महत्वपूर्ण है शायद मैं इसे पोस्ट कर सकते हैं), लेकिन जब मैं भागा SSMS अनुमानित क्वेरी योजना, उसने मुझे बताया कि एक नया गैर क्लस्टर सूचकांक 100% तक प्रदर्शन में सुधार करेगा।
Existing Index: Non-clustered
Key Colums (LogItem): ParentLogID, DateModified, Name, DatabaseModified
Query Plan Recommendation
CREATE NONCLUSTERED INDEX [LogReportIndex]
ON [dbo].[LogItem] ([ParentLogID],[DatabaseModified])
बस मस्ती के लिए, मैं इस नए सूचकांक बनाया है और मेरे आश्चर्य करने के लिए क्वेरी और भी बहुत कुछ भाग गया, यह अब, मेरी क्वेरी को चलाने के लिए लेता है ~ 1 सेकंड जब इससे पहले कि यह 10+ सेकंड था।
मुझे लगता है कि मेरी मौजूदा अनुक्रमणिका इस नई क्वेरी को कवर करेगी, इसलिए मेरा सवाल यह है कि मेरी नई क्वेरी में उपयोग किए गए केवल कॉलम पर एक नई अनुक्रमणिका क्यों बना रही है? क्या मेरे पास where
क्लॉज में उपयोग किए गए कॉलम के प्रत्येक अद्वितीय संयोजन के लिए एक अनुक्रमणिका होनी चाहिए?
नोट: मुझे नहीं लगता कि ऐसा इसलिए है क्योंकि SQL सर्वर मेरे परिणामों को कैश कर रहा है, मैंने इंडेक्स बनाने से पहले 25-30 बार क्वेरी चलाई और इसे सूचकांक के बाद लगातार 10-15 सेकंड लिया अब लगातार ~ 1 या उससे कम है।
अतिरिक्त गैर-क्लस्टर इंडेक्स बनाने से पहले, * वास्तविक निष्पादन योजना * सूचकांक उपयोग के लिए क्या दिखाया गया था? –
100% से बेहतर प्रदर्शन क्या है? – JeffO
@ शार्क अच्छा सवाल, मुझे यकीन नहीं है। यह मेरी पहली प्रदर्शन डीबगिंग स्थिति है। मैं आगे बढ़ने के लिए निश्चित रूप से पकड़ लेंगे। यह सब कहा गया था 'लापता सूचकांक' और यह कहा कि कौन से क्षेत्र। – Nate