sexta-feira, 7 de dezembro de 2012

Script para gerar índices baseado na DMV de Missing Indexes

Já utilizei este script algumas vezes, mas nunca o registrei aqui no blog. O Pinal Dave, administrador do ótimo SqlAuthority (o nome já impressiona, não?), criou este script, que inclui uma coluna com a criação dos índices baseado nas DMVs sys.dm_db_missing_index_groups, sys.dm_db_missing_index_group_stats, sys.dm_db_missing_index_details  . 

A prioridade da execução é baseada nas coluna Avg_Estimated_impact que é calculada pela média de impacto nas querys de usuário vezes as USER_SEEKS e SCANS. Estopu replicando o script aqui no blog, mas o original está aqui: http://blog.sqlauthority.com/2011/01/03/sql-server-2008-missing-index-script-download/

SELECT TOP 25
dm_mid.database_id 
AS DatabaseID,dm_migs.avg_user_impact*(dm_migs.user_seeks+dm_migs.user_scans)Avg_Estimated_Impact,dm_migs.last_user_seek AS Last_User_Seek,OBJECT_NAME(dm_mid.OBJECT_ID,dm_mid.database_idAS [TableName],'CREATE INDEX [IX_' OBJECT_NAME(dm_mid.OBJECT_ID,dm_mid.database_id) +'_'REPLACE(REPLACE(REPLACE(ISNULL(dm_mid.equality_columns,''),', ','_'),'[',''),']','') +CASEWHEN dm_mid.equality_columns IS NOT NULL AND dm_mid.inequality_columns IS NOT NULL THEN '_'ELSE ''ENDREPLACE(REPLACE(REPLACE(ISNULL(dm_mid.inequality_columns,''),', ','_'),'[',''),']','')
']'' ON ' dm_mid.statement' (' ISNULL (dm_mid.equality_columns,'')
CASE WHEN dm_mid.equality_columns IS NOT NULL AND dm_mid.inequality_columns IS NOT NULL THEN ',' ELSE'' ENDISNULL (dm_mid.inequality_columns'')
')'ISNULL (' INCLUDE (' dm_mid.included_columns ')'''ASCreate_StatementFROM sys.dm_db_missing_index_groups dm_migINNER JOIN sys.dm_db_missing_index_group_stats dm_migsON dm_migs.group_handle dm_mig.index_group_handleINNER JOIN sys.dm_db_missing_index_details dm_midON dm_mig.index_handle dm_mid.index_handleWHERE dm_mid.database_ID DB_ID()ORDER BY Avg_Estimated_Impact DESCGO

Leia o meu livro sobre ETL com SSIS 2012 http://www.erica.com.br/detalhes.asp?cod=4094

Nenhum comentário:

Postar um comentário

Leave your comment here!