Missing Indexes



 Olá pessoal! Tranquilo? Espero que sim!



 Hoje vou falar sobre uma “feature” bem interessante que surgiu no SQL Server 2005 e que pode ser muito útil na hora de “tunar” uma determinada query: a novidade foi chamada de “Missing Indexes”.

 Os “Missing Indexes” se utilizam dos Dynamic Management Objetcs (DMO’s) e do “Showplan” para prover informações sobre índices inexistentes que podem vir melhorar a performance das queries.

 Quando o query optimizer gera um plano, ele acaba armazenando informações sobre índices que poderiam ajudar na performance porém que não foram criados. Como acessar então estes índices “ocultos” e verificar se eles podem realmente ser uteis a query que estou rodando?

Bom, existem algumas formas de visualizar a informação, são elas: 


1. VIEW DE SISTEMA.


 Através das views abaixo você pode acessar a informação sobre os “Missing indexes”.


sys.dm_db_missing_index_group_stats

sys.dm_db_missing_index_groups

sys.dm_db_missing_index_details

sys.dm_db_missing_index_columns 


2. PLANO DE EXECUÇÃO EM FORMATO XML.

Você pode salvar o plano XML e procurar dentro dele o elemento que se iniciar com  “<MissingIndexes>” e de lá extrair a informação, veja o exemplo abaixo:


<MissingIndexes>

        <MissingIndexGroup Impact="22.8764">

         <MissingIndex Database="[ADVENTUREWORKS2008R2]" Schema="[Person]" Table="[Address]">

          <ColumnGroup Usage="EQUALITY">

           <Column Name="[PostalCode]" ColumnId="4" />

          </ColumnGroup>

          <ColumnGroup Usage="INEQUALITY">

           <Column Name="[ModifiedDate]" ColumnId="5" />

          </ColumnGroup>

          <ColumnGroup Usage="INCLUDE">

           <Column Name="[AddressLine1]" ColumnId="2" />

           <Column Name="[AddressLine2]" ColumnId="3" />

           <Column Name="[StateProvinceID]" ColumnId="1" />

          </ColumnGroup>

         </MissingIndex>

        </MissingIndexGroup>

       </MissingIndexes>



3. SSMS (SQL Server Management Studio) - Versão SQL 2008 ou acima.


 No próprio “Management Studio” quando você pede a visualização do plano, acima do mesmo você irá verificar em verde a sintaxe de criação do “Missing Indexes”, ou seja, basta você copia-la e criar o novo índice, veja o exemplo abaixo:

 Só um alerta, todo índice antes de ser implementado deve ser devidamente testado em um ambiente controlado, eles podem ser ótimos para a performance mais algumas vezes também podem causar o efeito contrário prejudicando a execução da query em análise, lembrando ainda que os “Missing Indexes” nem sempre tem uma visão de tudo que está envolvido, ou seja, tratam casos isolados, “query a query” digamos assim.


Links de referência:





 Espero que tenham gostado do post! Um abraço e até a próxima!

Nenhum comentário:

Postar um comentário