Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Indeks SQL Server yang Tidak Digunakan

Hai,

SQL Server DBA harus memantau semua indeks dan indeks mana yang menggunakan dan mana yang tidak.

Jika indeks tidak menggunakan atau menggunakan sangat jarang maka SQL Server DBA harus menghapusnya agar tidak memberikan beban tambahan ke database.

Anda dapat menemukan semua statistik penggunaan indeks dengan skrip berikut. Skrip akan menghasilkan skrip indeks drop juga, Anda dapat menggunakan skrip ini untuk menjatuhkan indeks dengan aman.

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. Periksa apakah tabel sementara ada dan hapus jika ada sebelum membuat tabel sementara

  2. Memformat Nomor Telepon di SQL Server (T-SQL)

  3. Berurusan dengan NULL di SQL Server

  4. Gunakan FILE_NAME() untuk Mengembalikan Nama File Logis untuk ID File yang Diberikan di SQL Server

  5. Menggunakan Petunjuk NOLOCK di EF4?