Identificando as maiores tabelas do seu banco

Identificando as maiores tabelas do seu banco

Identificar o total de registros nas tabelas de um banco e as tabelas que possuem mais registros seria a princípio uma tarefa complicada, devido a necessidade de aplicar um count(*) em todas as tabelas e o tempo que tal count(*) levaria se as tabelas forem realmente grandes.

Uma forma simples de resolver esse problema é utilizar-se das tabelas de sistema :
A tabela sysindexes possui um campo chamado rowcnt que contém o número de linhas de cada objeto registrado na sysindexes.
De quebra temos ainda dpages, o total de páginas de dados da tabela.

A tabela sysindexes guarda uma linha para cada indice da tabela. Portanto devemos pegar apenas as linhas referentes a tabela.
Para isso devemos fazer 2 procedimentos :

1 – O campo indid deve ser 0 ou 1, valores referentes a tabela sem índice ou ao indice clustered.
2 – Devemos também nos aproveitar da função OBJECTPROPERTY, que nos devolve o valor de uma propriedade de um objeto para garantirmos que o objeto listado seja realmente uma tabela.

Veja como fica :

Select object_name(id),rowcnt,dpages*8 as tamanho from sysindexes
where indid in (1,0) and objectproperty(id,’isusertable’)=1
order by tamanho desc

Observe o order by tamanho desc para destacar as maiores tabelas.
Além disso, poderia ainda ser aplicada a instrução TOP neste select

Posts Similares