sys.dm_db_missing_index_group_stats (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
Devuelve información de resumen sobre los grupos de índices que faltan, excluidos los índices espaciales.
En Azure SQL Database, las vistas de administración dinámica no pueden mostrar información que afecte a la contención de la base de datos o que exponga datos acerca de otras bases de datos a las que el usuario tenga acceso. Para evitar exponer esta información, se filtran todas las filas que contienen datos que no pertenecen al inquilino conectado.
Nombre de la columna | Tipo de datos | Descripción |
---|---|---|
group_handle | int | Identifica un grupo de índices que faltan. Este identificador es único en todo el servidor. Las otras columnas proporcionan información sobre todas las consultas para las que se considera que falta el índice del grupo. Un grupo de índices solo contiene un índice. Se puede unir a index_group_handle en sys.dm_db_missing_index_groups. |
unique_compiles | bigint | Número de compilaciones y recompilaciones que se beneficiarían de este grupo de índices que faltan. Las compilaciones y recompilaciones de muchas consultas distintas puede contribuir a este valor de columna. |
user_seeks | bigint | Número de búsquedas iniciadas por consultas de usuario para las que se podría haber utilizado el índice recomendado del grupo. |
user_scans | bigint | Número de recorridos iniciados por consultas de usuario para los que se podría haber utilizado el índice recomendado del grupo. |
last_user_seek | datetime | Fecha y hora de la última búsqueda iniciada por consultas de usuario para la que se podría haber utilizado el índice recomendado del grupo. |
last_user_scan | datetime | Fecha y hora del último recorrido iniciado por consultas de usuario para el que se podría haber utilizado el índice recomendado del grupo. |
avg_total_user_cost | float | Costo medio de las consultas de usuario que podría reducirse mediante el índice del grupo. |
avg_user_impact | float | Beneficio porcentual medio que podrían obtener las consultas de usuario si se implementara este grupo de índices que faltan. El valor significa que el costo de las consultas se reduciría este porcentaje como promedio si se implementara este grupo de índices que faltan. |
system_seeks | bigint | Número de búsquedas iniciadas por consultas del sistema, como consultas de estadísticas automáticas, para las que se podría haber utilizado el índice recomendado del grupo. Para obtener más información, vea Auto Stats Event Class. |
system_scans | bigint | Número de recorridos iniciados por consultas del sistema para los que se podría haber utilizado el índice recomendado del grupo. |
last_system_seek | datetime | Fecha y hora de la última búsqueda en el sistema iniciada por consultas del sistema para la que se podría haber utilizado el índice recomendado del grupo. |
last_system_scan | datetime | Fecha y hora del último recorrido en el sistema iniciado por consultas del sistema para el que se podría haber utilizado el índice recomendado del grupo. |
avg_total_system_cost | float | Costo medio de las consultas del sistema que podría reducirse mediante el índice del grupo. |
avg_system_impact | float | Beneficio porcentual medio que podrían obtener las consultas del sistema si se implementara este grupo de índices que faltan. El valor significa que el costo de las consultas se reduciría este porcentaje como promedio si se implementara este grupo de índices que faltan. |
Comentarios
Cada ejecución de consulta actualiza la información devuelta sys.dm_db_missing_index_group_stats
por , no por cada compilación o recompilación de consultas. Las estadísticas de uso no se conservan y solo se conservan hasta que se reinicia el motor de base de datos. Los administradores de bases de datos deben realizar periódicamente una copia de seguridad de la información de los índices que faltan si desean conservar las estadísticas de uso después del reciclaje del servidor. Use la columna sqlserver_start_time
en sys.dm_os_sys_info para encontrar la hora del último inicio del motor de base de datos.
Nota:
El conjunto de resultados de esta DMV está limitado a 600 filas. Cada fila contiene un índice que falta. Si tiene más de 600 índices que faltan, debe abordar los índices que faltan para que pueda ver los más recientes.
Un grupo de índices que falta puede tener varias consultas que necesitaban el mismo índice. Para obtener más información sobre las consultas individuales que necesitaban un índice específico en esta DMV, consulte sys.dm_db_missing_index_group_stats_query.
Permisos
Para consultar esta vista de administración dinámica, se debe conceder a los usuarios el permiso VIEW SERVER STATE o cualquier permiso que implique el permiso VIEW SERVER STATE.
Permisos para SQL Server 2022 y versiones posteriores
Requiere el permiso VER ESTADO DE RENDIMIENTO DEL SERVIDOR en el servidor.
Ejemplos
En los ejemplos siguientes se muestra cómo usar la sys.dm_db_missing_index_group_stats
vista de administración dinámica. Obtenga más información sobre las instrucciones para usar índices que faltan en la optimización de índices no clúster con sugerencias de índice que faltan.
A Buscar los 10 índices que faltan para los que se prevé mayor aumento de rendimiento en las consultas de usuario
La siguiente consulta determina cuáles de los 10 índices que faltan producirían el mayor aumento acumulado previsto, en orden descendente, para consultas de usuario.
SELECT TOP 10 *
FROM sys.dm_db_missing_index_group_stats
ORDER BY avg_total_user_cost * avg_user_impact * (user_seeks + user_scans)DESC;
B. Buscar los índices que faltan individuales y sus detalles de columna para un grupo específico de índices que faltan
La siguiente consulta determina cuáles de los índices que faltan forman un grupo específico de índices que faltan y muestra sus detalles de columna. Para este ejemplo, el índice group_handle
que falta es 24.
SELECT migs.group_handle, mid.*
FROM sys.dm_db_missing_index_group_stats AS migs
INNER JOIN sys.dm_db_missing_index_groups AS mig
ON (migs.group_handle = mig.index_group_handle)
INNER JOIN sys.dm_db_missing_index_details AS mid
ON (mig.index_handle = mid.index_handle)
WHERE migs.group_handle = 24;
Esta consulta proporciona el nombre de la base de datos, el esquema y la tabla en que falta un índice. También proporciona los nombres de las columnas que deben usarse para la clave de índice. Al escribir la instrucción DDL CREATE INDEX para implementar índices que faltan, enumere primero las columnas de igualdad y, a continuación, las columnas de desigualdad en la cláusula ON <table_name> de la instrucción CREATE INDEX. Las columnas incluidas deben mostrarse en la cláusula INCLUDE de la instrucción CREATE INDEX. Para determinar un orden efectivo para las columnas de igualdad, ordene en función de su selectividad, enumerando primero las columnas más selectivas (situadas más a la izquierda en la lista de columnas). Obtenga información sobre cómo aplicar sugerencias de índice que faltan.
Pasos siguientes
Obtenga más información sobre la característica de índice que falta en los siguientes artículos:
- Ajuste de índices no agrupados con sugerencias de índices que faltan
- sys.dm_db_missing_index_columns (Transact-SQL)
- sys.dm_db_missing_index_details (Transact-SQL)
- sys.dm_db_missing_index_groups (Transact-SQL)
- sys.dm_db_missing_index_group_stats_query (Transact-SQL)
- CREATE INDEX (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)