miércoles, 17 de enero de 2024

INDICES PERDIDOS SQL SERVER

 

Í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?


No hay comentarios.:

Publicar un comentario

DB PostgreSQL