sys.dm_db_missing_index_group_stats_query (Transact-SQL)
Se aplica a: SQL Server 2019 (15.x) Base de datos de Azure SQL Azure SQL Managed Instance
Devuelve información sobre las consultas que necesitaban un índice que faltaba de grupos de índices que faltan, excepto los índices espaciales. Se puede devolver más de una consulta por grupo de índices que falta. Un grupo de índices que falta puede tener varias consultas que necesitaban el mismo índice.
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. |
query_hash | binary(8) | Valor hash binario que se calcula en la consulta y que se usa para identificar consultas con una lógica similar. Puede usar el hash de consulta para determinar el uso de recursos agregados para las consultas que solo se diferencian en los valores literales. |
query_plan_hash | binary(8) | Valor hash binario que se calcula en el plan de ejecución de consulta y que se usa para identificar planes de ejecución de consulta similares. Puede usar el hash del plan de consulta para buscar el costo acumulativo de las consultas con planes de ejecución similares. Será siempre 0x000 cuando un procedimiento almacenado nativo consulte una tabla optimizada para memoria. |
last_sql_handle | varbinary(64) | Es un token que identifica de forma única el lote o el procedimiento almacenado de la última instrucción compilada que necesitaba este índice.last_sql_handle se puede usar para recuperar el texto SQL de la consulta llamando a la función de administración dinámica sys.dm_exec_sql_text. |
last_statement_start_offset | int | Indica, en bytes, a partir de 0, la posición inicial de la consulta que la fila describe dentro del texto de su lote o objeto persistente para la última instrucción compilada que necesitaba este índice en su lote de SQL. |
last_statement_end_offset | int | Indica, en bytes, a partir de 0, la posición final de la consulta que la fila describe dentro del texto de su lote o objeto persistente para la última instrucción compilada que necesitaba este índice en su lote de SQL. |
last_statement_sql_handle | varbinary(64) | Es un token que identifica de forma única el lote o el procedimiento almacenado de la última instrucción compilada que necesitaba este índice. Usado por Almacén de consultas. A diferencia de , sys.query_store_query_text hace referencia al usado statement_sql_handle por la vista de catálogo de Almacén de consultas sys.query_store_query_text.last_sql_handle Si Almacén de consultas no se ha habilitado cuando se compiló la consulta, devuelve 0. |
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_query
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. También puede conservar los índices que faltan con Almacén de consultas.
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.
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_query
vista de administración dinámica.
A Busque el texto de consulta más reciente para las 10 mejoras más altas previstas para las consultas de usuario.
La consulta siguiente devuelve el último texto de consulta grabado para los 10 índices que faltan que generarían la mejora acumulativa más alta prevista, en orden descendente.
SELECT TOP 10
SUBSTRING
(
sql_text.text,
misq.last_statement_start_offset / 2 + 1,
(
CASE misq.last_statement_start_offset
WHEN -1 THEN DATALENGTH(sql_text.text)
ELSE misq.last_statement_end_offset
END - misq.last_statement_start_offset
) / 2 + 1
),
misq.*
FROM sys.dm_db_missing_index_group_stats_query AS misq
CROSS APPLY sys.dm_exec_sql_text(misq.last_sql_handle) AS sql_text
ORDER BY misq.avg_total_user_cost * misq.avg_user_impact * (misq.user_seeks + misq.user_scans) DESC;
Pasos siguientes
Obtenga más información sobre la característica de índice que falta y los conceptos relacionados en los artículos siguientes:
- 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 (Transact-SQL)
- sys.dm_exec_sql_text (Transact-SQL)
- CREATE INDEX (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)
- Almacén de consultas