Sep 5 2011

Cum sa gasim potentiali indecsi lipsa in SQL Server

Categorie: DBA | Index | SQL Server | T-SQLCatalin Dumitru @ 11:24

Incepand cu versiunea SQL Server 2005 au fost create o serie de obiecte dinamice care ofera suport pentru gasirea de potentiali indecsi lipsa. Cand o interogare este lansata in excutie si se realizeaza o operatiune de tip scan sau seek care ar putea beneficia de adaugarea unui index, se actualizeaza view-urile dinamice:

  • sys.dm_db_missing_index_group_stats 
  • sys.dm_db_missing_index_groups 
  • sys.dm_db_missing_index_details
  • sys.dm_db_missing_index_columns

Scriptul de mai jos ofera informatiile necesare pentru gasirea de potentiali indecsi lipsa:

DECLARE @db_name sysname = NULL

SELECT mid.statement as TableName,
  mid.equality_columns,
  mid.inequality_columns,
  mid.included_columns,
  ISNULL(migs.unique_compiles, 0) AS CompileCount,
  ISNULL(migs.user_seeks, 0) AS UserSeeks,
  ISNULL(migs.user_scans, 0) AS UserScans,     migs.avg_total_user_cost,
  migs.avg_user_impact
FROM sys.dm_db_missing_index_details mid
INNER JOIN sys.dm_db_missing_index_groups mig  ON  mid.index_handle = mig.index_handle
LEFT JOIN sys.dm_db_missing_index_group_stats migs  ON  mig.index_group_handle = migs.group_handle
WHERE mid.database_id = ISNULL(DB_ID(@db_name), mid.database_id)
ORDER BY avg_total_user_cost DESC

Desi aceasta functionalitate ofera un foarte bun punct de plecare, nu este foarte bine sa ne bazam doar pe scriptul de mai sus, acesta nu ofera un rafinament foarte bun iar factorul uman ramane important.

Descarca scriptul de aici: Potentiali Indecsi Lipsa.sql (697,00 bytes)

 

Etichete: , , , ,