Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2019 (15.x) e versões posteriores
do Banco de Dados SQL do AzureBanco de Dados SQL
do Azure Banco de Dados SQL banco de dados SQL do Banco de Dados SQL do Azure
banco de dados SQL no Microsoft Fabric
Retorna informações sobre consultas que precisavam de um índice ausente de grupos de índices ausentes, excluindo índices espaciais. Mais de uma consulta pode ser retornada por grupo de índice ausente. Um grupo de índice ausente pode ter várias consultas que precisavam do mesmo índice.
No Azure SQL Database, as visualizações de gerenciamento dinâmico não podem expor informações que afetariam o contenimento do banco de dados, nem expor informações sobre outros bancos de dados aos quais o usuário tem acesso. Para evitar a exposição dessas informações, todas as linhas que contêm dados que não pertencem ao locatário conectado são filtradas.
| Nome da coluna | Tipo de dados | Descrição |
|---|---|---|
group_handle |
int | Identifica um grupo de índices ausentes. Esse identificador é exclusivo no servidor. As outras colunas fornecem informações sobre todas as consultas para as quais o índice no grupo é considerado ausente. Um grupo de índice contém apenas um índice. Pode ser unido index_group_handle em sys.dm_db_missing_index_groups. |
query_hash |
binary(8) | Valor de hash binário calculado na consulta e usado para identificar consultas com lógica semelhante. Você pode usar o hash de consulta para determinar o recurso de agregação usado para consultas que são diferentes apenas nos valores literais. |
query_plan_hash |
binary(8) | Valor de hash binário calculado no plano de execução de consulta e usado para identificar planos de execução de consulta semelhantes. Você pode usar o hash de plano de consulta para localizar o custo cumulativo de consultas com planos de execução semelhantes. Sempre 0x000 quando um procedimento armazenado compilado nativamente consulta uma tabela otimizada para memória. |
last_sql_handle |
varbinary(64) | Um token que identifica de forma única o procedimento em lote ou armazenado da última instrução compilada que precisava desse índice. O last_sql_handle pode ser usado para recuperar o texto SQL da consulta chamando a função de gerenciamento dinâmico sys.dm_exec_sql_text. |
last_statement_start_offset |
int | Indica, em bytes, começando com 0, a posição inicial da consulta que a linha descreve no texto de seu lote ou objeto persistente para a última instrução compilada que precisava desse índice em seu lote SQL. |
last_statement_end_offset |
int | Indica, em bytes, começando com 0, a posição final da consulta que a linha descreve dentro do texto de seu objeto em lote ou persistente, para a última instrução compilada que precisava desse índice em seu lote SQL. |
last_statement_sql_handle |
varbinary(64) | Um token que identifica de forma única o procedimento em lote ou armazenado da última instrução compilada que precisava desse índice. Usado pelo Repositório de Consultas. Ao contrário last_sql_handledo , sys.query_store_query_text faz referência ao statement_sql_handle usado pelo sys.query_store_query_text de exibição do catálogo do Repositório de Consultas.Retorna 0 se a Loja de Consultas não estava ativada quando a consulta foi compilada. |
user_seeks |
bigint | Número de buscas geradas por consultas de usuário para as quais o índice recomendado no grupo poderia ter sido usado. |
user_scans |
bigint | Número de exames gerados por consultas de usuário para as quais o índice recomendado no grupo poderia ter sido usado. |
last_user_seek |
datetime | Data e hora da última busca gerada por consultas de usuário para as quais o índice recomendado no grupo poderia ter sido usado. |
last_user_scan |
datetime | Data e hora do último exame gerado por consultas de usuário para as quais o índice recomendado no grupo poderia ter sido usado. |
avg_total_user_cost |
float | Custo médio das consultas de usuário que poderia ser reduzido pelo índice no grupo. |
avg_user_impact |
float | Benefício da porcentagem média que as consultas de usuário poderiam experimentar se esse grupo de índices ausentes fosse implementado. O valor indica que o custo da consulta ficaria na média dessa porcentagem se esse grupo de índices ausentes fosse implementado. |
system_seeks |
bigint | Número de buscas geradas por consultas de sistema, como consultas de estatística automáticas, para as quais o índice recomendado no grupo poderia ter sido usado. Para obter mais informações, consulte Classe de evento Auto Stats. |
system_scans |
bigint | Número de exames gerados por consultas de sistema para as quais o índice recomendado no grupo poderia ter sido usado. |
last_system_seek |
datetime | Data e hora da última busca gerada no sistema por consultas de sistema para as quais o índice recomendado no grupo poderia ter sido usado. |
last_system_scan |
datetime | Data e hora do último exame gerado no sistema por consultas de sistema para as quais o índice recomendado no grupo poderia ter sido usado. |
avg_total_system_cost |
float | Custo médio das consultas de sistema que poderia ser reduzido pelo índice no grupo. |
avg_system_impact |
float | Benefício de porcentagem média que as consultas de sistema poderiam experimentar se esse grupo de índices ausentes fosse implementado. O valor indica que o custo da consulta ficaria na média dessa porcentagem se esse grupo de índices ausentes fosse implementado. |
Comentários
As informações retornadas por sys.dm_db_missing_index_group_stats_query são atualizadas por cada execução de consulta, não por cada compilação ou recompilação de consulta. As estatísticas de uso não são mantidas e são mantidas apenas até que o motor do banco de dados seja reiniciado.
Os administradores de banco de dados devem periodicamente gerar cópias de backup de informações de índice ausente se quiserem manter as estatísticas de uso após o desligamento e a reinicialização do servidor. Use a coluna sqlserver_start_time em sys.dm_os_sys_info para localizar a última hora de inicialização do mecanismo de banco de dados. Você também pode persistir índices ausentes com o Repositório de Consultas.
Permissões
Para consultar essa visão de gerenciamento dinâmico, os usuários devem receber a VIEW SERVER STATE permissão ou qualquer permissão que implique essa VIEW SERVER STATE permissão, para o SQL Server 2019 (15.x) e versões anteriores.
Requer permissão VIEW SERVER PERFORMANCE STATE no servidor, para SQL Server 2022 (16.x) e versões posteriores.
Exemplos
Os exemplos a seguir ilustram como usar a sys.dm_db_missing_index_group_stats_query exibição de gerenciamento dinâmico.
R. Encontre o texto de consulta mais recente para as 10 melhorias mais esperadas para consultas de usuários
A consulta a seguir retorna o último texto de consulta registrado para os 10 índices ausentes que produziriam a maior melhoria cumulativa prevista, em ordem decrescente.
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;
Conteúdo relacionado
- Ajustar índices não clusterizados com sugestões de índice ausente
- 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)
- CRIAR ÍNDICE (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)
- Monitorar o desempenho usando o Repositório de Consultas