Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chỉ mục không sử dụng máy chủ SQL

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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cú pháp không chính xác gần từ khóa 'with' ... câu lệnh trước đó phải được kết thúc bằng dấu chấm phẩy

  2. Cách định dạng số trong SQL Server

  3. Bạn có đang sử dụng đúng công cụ giám sát hiệu suất cơ sở dữ liệu không?

  4. Có "HOẶC" trong điều kiện INNER JOIN có phải là một ý tưởng tồi không?

  5. Mệnh đề WHERE so với ON khi sử dụng JOIN