Número de registros de todas tabelas de um banco de dados

Boa noite pessoas!

Como de uma forma prática podemos identificar quantos registros possuem todas as tabelas de um banco de dados? Bom, ao executar uma consulta semelhante a que temos abaixo, podemos realizar este procedimento para uma tabela.

SELECT COUNT(*) FROM Tabela

E para identificar quantos registros possuem várias tabelas poderíamos pensar em elaborar um CURSOR (tradução livre: entidade demoníaca que induz o programador aos artifícios técnicos não documentados), que pode executar para cada uma das tabelas do banco de dados a consulta semelhante a que temos acima. Mas será que é a forma mais adequada?

Ok, como alternativa, eu proponho utilizar os índices HEAP (tradução livre: estrutura caótica de armazenamento de registros) e CLUSTERED (tradução livre: estrutura organizada para o armazenamento de registros) das tabelas por meio da consulta:

SELECT *
FROM sys.indexes
WHERE [type] IN (0,1)

E a partir destes índeces, identificar quantas linhas/registros que estão relacionadas a eles:

SELECT
  i.[object_id]
, p.[rows]
FROM sys.indexes i
INNER JOIN sys.partitions p
  ON p.[object_id] = i.[object_id]
  AND p.[index_id] = i.[index_id]
WHERE i.[type] IN (0,1)

Visto que podemos identificar a tabela relacionada a estes índices por meio da coluna object_id, concluímos as consulta desta forma:

SELECT
  s.[name]
, t.[name]
, p.[rows]
FROM sys.schemas s
INNER JOIN sys.tables t
  ON t.[schema_id] = s.[schema_id]
INNER JOIN sys.indexes i
  ON i.[object_id] = t.[object_id]
  AND i.[type] IN (0,1)
INNER JOIN sys.partitions p
  ON p.[object_id] = t.[object_id]
  AND p.[index_id] = i.[index_id]
ORDER BY
  s.[name]
, t.[name]

Outra pergunta, posso utilizar só a sys.partitions relacionada a sys.tables para identificar a quantidades de registros da tabela? Até pode, mas os resultados serão de acordo com os vários tipos de índices que as tabelas e views podem ter, que algumas vezes estes índices não obedecem a mesma regra aplicada aos índices HEAP e CLUSTERED.

Anúncios

4 pensamentos sobre “Número de registros de todas tabelas de um banco de dados

  1. Pingback: Número de registros de todas tabelas de um banco de dados (SQL Azure) | SQL From Hell.com

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s