Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
1240
Assunto : SQL Server
Titulo: Como identificar Missing Indexes

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Quando o SQL Server compila um plano de execução, as vezes ele identifica que um determinado índice poderia fazer diferença na execução da query, se existisse.

Todos os índices que o SQL Server identifica como faltando, "Missing", ficam registrados em um conjunto de DMV's que identificam os detalhes do índice, as estatísticas de tentativas de acesso ao índice e uma DMV que interliga ambas.

Desta forma o registro dos Missing Indexes se tornam um excelente ponto de partida para solucionar problemas com queries no servidor de banco. Podemos fazer uma query que identifique as informações dos missing indexes e as organize conforme o impacto que eles tem em nosso ambiente, veja como fica:

SELECT TOP 20
ROUND(s.avg_total_user_cost *
s.avg_user_impact
* (s.user_seeks + s.user_scans),0)
AS [Total Cost]
, s.user_seeks
,s.user_scans
,d.[statement] AS [Table Name]
,equality_columns
,inequality_columns
,included_columns
FROM sys.dm_db_missing_index_groups g
INNER JOIN sys.dm_db_missing_index_group_stats s
ON s.group_handle = g.index_group_handle
INNER JOIN sys.dm_db_missing_index_details d
ON d.index_handle = g.index_handle
ORDER BY [Total Cost] DESC

É simples transformarmos essa query em função:

CREATE FUNCTION dbo.MissingIndexes
()
RETURNS TABLE
AS
RETURN
(
SELECT TOP 20
ROUND(s.avg_total_user_cost *
s.avg_user_impact
* (s.user_seeks + s.user_scans),0)
AS [Total Cost]
, s.user_seeks
,s.user_scans
,d.[statement] AS [Table Name]
,equality_columns
,inequality_columns
,included_columns
FROM sys.dm_db_missing_index_groups g
INNER JOIN sys.dm_db_missing_index_group_stats s
ON s.group_handle = g.index_group_handle
INNER JOIN sys.dm_db_missing_index_details d
ON d.index_handle = g.index_handle
ORDER BY [Total Cost] DESC
)
GO

A partir dai um simples select nos traz as informações que precisamos:

select * from dbo.MissingIndexes()


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 11/28/2017 12:12:00 AM
nome: aTqarUaLIz
email: jimosanil0c@hotmail.com
comentário:
uxaOZm http://www.LnAJ7K8QSpfMO2wQ8gO.com

 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br