Identificando as tabelas mais utilizadas no SQL SERVER

Identificando as tabelas mais utilizadas no SQL SERVER

Um recurso do SQL Server utilizado para coletar informações a respeito da utilização do banco de dados são as SQL Dynamic Management Views, que podem ser acessadas utilizando "sys.dm_db_index_usage_stats". Estas informações ficam disponíveis desde a última vez em que o servidor foi reiniciado.

O script a seguir permite ver quais foram as tabelas mais utilizadas

SELECT

       db_name(ius.database_id) [Database],

       t.NAME [Tabela],

      SUM(ius.user_seeks + ius.user_scans + ius.user_lookups) [#Acessos]

    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('NOME_DO_SEU_BANCO_DE_DADOS') 

    GROUP BY

       database_id,

       t.name

    ORDER BY

       SUM(ius.user_seeks + ius.user_scans + ius.user_lookups) DESC

Outra query que pode ser interessante é identificar quais foram os índices mais utilizados    

     SELECT

       db_name(ius.database_id) [Database],

       t.NAME [Tabela],

       i.NAME [Indice],

       i.type_desc [TipoIndice],

       ius.user_seeks + ius.user_scans + ius.user_lookups [#Acessos]

    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('NOME_DO_SEU_BANCO_DE_DADOS')

   ORDER BY

       ius.user_seeks + ius.user_scans + ius.user_lookups DESC

 Por última, uma query que permite identificar quando uma tabela foi acessada pela última vez.

  

   USE NOME_DO_SEU_BANCO_DE_DADOS;

   WITH ultimos AS

   (

   SELECT SCHEMA_NAME(B.schema_id) +'.'+object_name(b.object_id) [Tabela],

   (   SELECT MAX(last_user_dt)

   FROM (VALUES (last_user_seek),(last_user_scan),(last_user_lookup)) AS all_val(last_user_dt)) [Acessos]

   FROM sys.dm_db_index_usage_stats a RIGHT OUTER JOIN sys.tables b

     ON a.object_id = b.object_id

   )

   SELECT

      [Acessos],

      MAX([Accessed]) [UltimoAcesso]

   FROM

      ultimos 

   GROUP BY

      [Tabela]

   ORDER BY

      [UltimoAcesso] DESC

 

 

Outros conteudos que podem ser de seu interesse

Comandos uteis para trabalhar com tabelas no SQL
15/03/2020SQL

Comandos uteis para trabalhar com tabelas no SQL

Algumas dicas de como listar a quantidade de registros, data de atualização e índices de tabelas no SQL Server e no MySQL

Saiba mais...
Restringindo a entrada de dados com SQL
01/10/2023SQL

Restringindo a entrada de dados com SQL

Veja como funcionam as constraints dos bancos de dados SQL

Saiba mais...

Conteúdo sobre banco de dados sem complicação!