Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Nieużywany indeks programu SQL Server

Biodro>

SQL Server DBA powinien monitorować wszystkie indeksy oraz to, które z indeksów są używane, a które nie.

Jeśli indeks nie używa lub nie jest używany bardzo rzadko, administrator bazy danych SQL Server powinien go usunąć, aby nie obciążać bazy danych.

Wszystkie statystyki wykorzystania indeksów znajdziesz w poniższym skrypcie. Skrypt wygeneruje również skrypt usuwania indeksu, możesz użyć tego skryptu do bezpiecznego usuwania indeksu.

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. Błąd serwera SQL 206:konflikt typu operandu

  2. EF5:Nie można dołączyć pliku „{0}” jako bazy danych „{1}”

  3. Błędy w SQL Server podczas importowania pliku CSV pomimo użycia varchar(MAX) dla każdej kolumny

  4. Jaki jest najlepszy sposób wyświetlania obrazu z bazy danych serwera sql w asp.net?

  5. Osiągnięcie limitu parametrów 2100 (SQL Server) podczas korzystania z Contains()