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