2010-09-15 14 views
5

मैं लापता इंडेक्स खोजने के लिए एक क्वेरी बनाने के साथ tinkering हूँ। मैंने अपने SQL सर्वर डीएमवी स्टार्टर पैक ईबुक में रेड-गेट लोगों द्वारा बनाई गई मूल क्वेरी ली है और इसे थोड़ा सा संशोधित कर रहा हूं। sys.dm_db_missing_index_group_stats में कुछ कॉलम हैं जो मुझे नहीं पता कि कैसे व्याख्या करें। वे हैं:एसक्यूएल सर्वर डीएमवी - sys.dm_db_missing_index_group_stats - इन कॉलम का क्या अर्थ है?

avg_total_user_cost 
avg_user_impact 

प्रलेखन मैं avg_total_user_cost पाया के रूप में हर बार जब उपयोगकर्ता क्वेरी मार डाला गया था का प्रतिनिधित्व करता है औसत कुल उपयोगकर्ता लागत परिभाषित किया गया है के अनुसार। और, avg_user_impact मान को प्रतिशत के रूप में दर्शाता है। यह सूचकांक बनने पर आपको जो सुधार मिल सकता है, वह दिखाता है।

मेरी क्वेरी में कहा गया एक सूचकांक 2.22 औसत उपयोगकर्ता लागत और 99.82 उपयोगकर्ता प्रभाव दिखाता है। इन संख्याओं का वास्तव में क्या अर्थ है? क्या इसका मतलब इंडेक्स जोड़कर है, मैं 99.82% से संबंधित क्वेरी की गति में सुधार कर सकता हूं। मुझे कोई संकेत नहीं है कि 2.22 का क्या अर्थ हो सकता है।

धन्यवाद।

+0

क्या आपके पास गायब इंडेक्स खोजने के लिए एक अच्छी क्वेरी है? –

+0

यहां एक अच्छा है: http://www.geniiius.com/blog/missing-indexes –

उत्तर

9

इनमें से मेरे व्याख्या की गई है कि:

  • avg_total_user_cost सभी क्वेरी संभावित लापता सूचकांक समूह के निर्माण से फायदा हो सकता है की वर्तमान औसत है। "लागत" यूनिटलेस मान अनुकूलक द्वारा गणना की गई है। देखें: SQL SERVER – Execution Plan – Estimated I/O Cost – Estimated CPU Cost – No Unit

  • avg_user_impact एक प्रतिशत सभी की लागत में औसत कमी का प्रतिनिधित्व करता है प्रश्नों अगर लापता सूचकांक समूह बनाया गया था। प्रतिशत अधिक है, अधिक नई अनुक्रमणिका का लाभ होगा।

3

@ जो जवाब सही लगता है, मैं तो बस कुछ संभवतः-उपयोगी जानकारी जोड़ रहा:

वहाँ एक लेख here एक overal प्रभाव मूल्य देने के लिए इस गणना का उपयोग करता है है:

avg_total_user_cost * avg_user_impact * (migs.user_seeks + migs.user_scans)) 

यहां वे प्रश्न पूछे गए हैं:

SELECT CONVERT (varchar, getdate(), 126) AS runtime, 
    mig.index_group_handle, mid.index_handle, 
    CONVERT (decimal (28,1), migs.avg_total_user_cost * migs.avg_user_impact * 
      (migs.user_seeks + migs.user_scans)) AS improvement_measure, 
    'CREATE INDEX missing_index_' + CONVERT (varchar, mig.index_group_handle) + '_' + 
       CONVERT (varchar, mid.index_handle) + ' ON ' + mid.statement + ' 
       (' + ISNULL (mid.equality_columns,'') 
       + CASE WHEN mid.equality_columns IS NOT NULL 
          AND mid.inequality_columns IS NOT NULL 
        THEN ',' ELSE '' END + ISNULL (mid.inequality_columns, '') 
       + ')' 
       + ISNULL (' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement, 
    migs.*, 
    mid.database_id, 
    mid.[object_id] 
FROM sys.dm_db_missing_index_groups AS mig 
INNER JOIN sys.dm_db_missing_index_group_stats AS migs 
    ON migs.group_handle = mig.index_group_handle 
INNER JOIN sys.dm_db_missing_index_details AS mid 
    ON mig.index_handle = mid.index_handle 
ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC 

परिणामस्वरूप improvement_measure यूनी है tless, यानी केवल एक सापेक्ष अर्थ में उपयोगी है, लेकिन इससे dm_db_missing_index_group_stats से विभिन्न मूल्यों को गठबंधन करने में मदद करने में मदद करनी चाहिए।

संबंधित मुद्दे