sys.db_db_missing_index_* (vistas) --> Rastrean los índices que pudieran crearse. Son: sys.sys.db_db_missing_index_detais, sys.db_db_missing_index_group_stats y
sys.db_db_missing_index_groups. Para decidir si los índices propuestos serían ventajosos, se puede calcular de la siguiente manera:
SELECT user_seeks * avg_total_user_cost * (avg_user_impact * 0.01) AS
index_advantage, migs.last_user_seek, mid.statement as
'Database.Schema.Table',
mid.equality_columns, mid.inequality_columns, mid.included_columns,
migs.unique_compiles, migs.user_seeks, migs.avg_total_user_cost,
migs.avg_user_impact
FROM sys.dm_db_missing_index_group_stats AS migs WITH (NOLOCK)
INNER JOIN sys.dm_db_missing_index_groups AS mig WITH (NOLOCK)
ON migs.group_handle = mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details AS mid WITH (NOLOCK)
ON mig.index_handle = mid.index_handle
ORDER BY index_advantage DESC;
-- Si el valor supera 5000 indica que debería evaluarse la creación de determinados índices.
-- Si el valor supera los 10000, quiere decir que ya contamos con un índice que puede ofrecer una mejora de rendimiento significativa en operaciones de lectura.
-- Para recoger todos los planes de ejecución en la caché:
SELECT * FROM sys.dm_exec_cached_plans cp CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle);
-- Extraer las 5 querys más pesadas por consumo de CPU:
SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
Plan_handle, query_plan
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle)
ORDER BY total_worker_time/execution_count DESC;
GO
Wednesday, March 24. 2010
Sugerencias de índices y planes de ejecución de consultas pesadas (SQL Server)
Si queréis ser proactivos en vuestro día a día como dba, estas consultas os pueden ser útiles.
Posted by David Lozano
at
12:04
(Page 1 of 1, totaling 1 entries)

