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

Calculando a idade usando SQL Server
23/09/2019SQL

Calculando a idade usando SQL Server

Aprenda a calcular a idade usando o SQL Server

Saiba mais...
Gerando sequências de números inteiros com SQL
26/02/2023SQL

Gerando sequências de números inteiros com SQL

Veja como criar sequências de números inteiros com SQL

Saiba mais...

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