Xin chào,
SQL Server DBA phải giám sát tất cả các chỉ mục và chỉ mục nào đang sử dụng và chỉ mục nào không.
Nếu chỉ mục không sử dụng hoặc sử dụng rất hiếm thì SQL Server DBA nên loại bỏ nó để không cung cấp thêm tải cho cơ sở dữ liệu.
Bạn có thể tìm thấy tất cả các thống kê sử dụng chỉ mục với tập lệnh sau. Tập lệnh cũng sẽ tạo tập lệnh chỉ mục giảm, bạn có thể sử dụng tập lệnh này để giảm chỉ mục một cách an toàn.
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;