Índices Perdidos en SQL SERVER
Hola, hoy te traigo un script muy útil para encontrar los índices perdidos en una DB. Este Query lo que muestra es la estadística e consultas masivas en tu DB y la sugerencia de índices que se deberían tener para mejorar el tiempo de respuesta:
SELECT
mid.statement Objeto,
CONVERT (varchar(30), getdate(), 126) AS runtime,
migs.avg_user_impact,
CONVERT (decimal (28, 1),
migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans)
) AS estimated_improvement,
'CREATE INDEX missing_index_' +
CONVERT (varchar, mig.index_group_handle) + '_' +
CONVERT (varchar, mid.index_handle) + ' ON ' +
mid.statement + ' (' + ISNULL (mid.equality_columns, '') +
CASE
WHEN mid.equality_columns IS NOT NULL
AND mid.inequality_columns IS NOT NULL THEN ','
ELSE ''
END + ISNULL (mid.inequality_columns, '') + ')' +
ISNULL (' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement
FROM sys.dm_db_missing_index_groups mig
JOIN sys.dm_db_missing_index_group_stats migs ON
migs.group_handle = mig.index_group_handle
JOIN sys.dm_db_missing_index_details mid ON
mig.index_handle = mid.index_handle
where migs.avg_user_impact >= 80.00
ORDER BY estimated_improvement DESC;
GO
En la imagen anterior se puede notar el campo "Avg_User_Impact" que es el que nos indica el % de impacto al no tener un índice en la tabla o consulta.
La ayuda buena de este query es el campo "create_index_statement" donde nos muestra el query con el script del index a crear.
Es importante analizar el index sugerido, ya que la tabla afectada puede ya tener un index y no sea necesario crear uno nuevo sino agregar el campo que pueda hacer falta.
Espero te sirva..
¿Qué cuentan?