नमस्ते,
SQL सर्वर DBA को सभी इंडेक्स की निगरानी करनी चाहिए और कौन से इंडेक्स का उपयोग कर रहे हैं और कौन से नहीं।
यदि अनुक्रमणिका बहुत दुर्लभ का उपयोग या उपयोग नहीं कर रही है तो SQL सर्वर DBA को डेटाबेस को अतिरिक्त भार प्रदान न करने के लिए इसे छोड़ देना चाहिए।
आप निम्न स्क्रिप्ट के साथ सभी अनुक्रमणिका उपयोग आंकड़े पा सकते हैं। स्क्रिप्ट ड्रॉप इंडेक्स स्क्रिप्ट भी उत्पन्न करेगी, आप इस स्क्रिप्ट का उपयोग इंडेक्स को सुरक्षित रूप से ड्रॉप करने के लिए कर सकते हैं।
SELECT o.name , indexname=i.name , i.index_id , reads=user_seeks + user_scans + user_lookups , writes = user_updates , rows = (SELECT SUM(p.rows) FROM sys.partitions p WHERE p.index_id = s.index_id AND s.object_id = p.object_id) , CASE WHEN s.user_updates < 1 THEN 100 ELSE 1.00 * (s.user_seeks + s.user_scans + s.user_lookups) / s.user_updates END AS reads_per_write , 'DROP INDEX ' + QUOTENAME(i.name) + ' ON ' + QUOTENAME(c.name) + '.' + QUOTENAME(OBJECT_NAME(s.object_id)) as 'drop statement' FROM sys.dm_db_index_usage_stats s INNER JOIN sys.indexes i ON i.index_id = s.index_id AND s.object_id = i.object_id INNER JOIN sys.objects o on s.object_id = o.object_id INNER JOIN sys.schemas c on o.schema_id = c.schema_id WHERE OBJECTPROPERTY(s.object_id,'IsUserTable') = 1 AND s.database_id = DB_ID() AND i.type_desc = 'nonclustered' AND i.is_primary_key = 0 AND i.is_unique_constraint = 0 AND (SELECT SUM(p.rows) FROM sys.partitions p WHERE p.index_id = s.index_id AND s.object_id = p.object_id) > 10000 ORDER BY reads;