Bruno Perroni
DBA SQL Server com mais de 6 anos de experiência!

Acessos Tabelas e Índices

Fala Galera, tudo certo com vocês ?

Nesse breve post vou colocar dois scripts bem uteis para a analise de utilização de tabelas e índices.

Eles mostram se uma tabela ou índice está sendo utilizado e a quantidade de vezes que foram acessados.

Lembrando que sempre que ocorre um restart no SQL Server as DMVs são zeradas, portanto sugiro executar esses scripts com pelo menos um mês passado desde o ultimo restart.

/*Tabelas Mais Acessadas*/
SELECT db_name(ius.database_id) AS BancoDeDados
	,t.NAME AS Tabela
	,SUM(ius.user_seeks + ius.user_scans + ius.user_lookups) AS VezesQueFoiAcessada
FROM sys.dm_db_index_usage_stats ius
INNER JOIN sys.tables t ON ius.OBJECT_ID = t.object_id
WHERE database_id = DB_ID('bancodedados')
GROUP BY database_id
	,t.NAME
ORDER BY SUM(ius.user_seeks + ius.user_scans + ius.user_lookups) DESC
/* Indices Mais Acessados*/
SELECT db_name(ius.database_id) AS BancoDeDados
	,t.NAME AS Tabela
	,i.NAME AS Indice
	,i.type_desc AS TipoIndice
	,ius.user_seeks + ius.user_scans + ius.user_lookups AS VezesQueFoiAcessada
FROM sys.dm_db_index_usage_stats ius
INNER JOIN sys.indexes i ON ius.OBJECT_ID = i.OBJECT_ID
	AND ius.index_id = i.index_id
INNER JOIN sys.tables t ON i.OBJECT_ID = t.object_id
WHERE database_id = DB_ID('bancodedados')
ORDER BY ius.user_seeks + ius.user_scans + ius.user_lookups DESC