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

Verificando a estrutura da tabela pelo terminal no MYSQL
27/10/2019SQL

Verificando a estrutura da tabela pelo terminal no MYSQL

Veja a estrutura e os indices da tabela pelo terminal

Saiba mais...
Calculando juros com SQL
05/04/2020SQL

Calculando juros com SQL

Veja alguns exemplos de cálculo de juros utilizando SQL Server e MySQL

Saiba mais...

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