Jump to content

Archived

This topic is now archived and is closed to further replies.

jothaz

Total registros e tamanho tabelas de um banco SQL

Recommended Posts

Exemplo interessante retirado da internet.

 

--Identificar o total de registros nas tabelas de um banco e consequentemente as tabelas que --possuem mais registros seria a principio 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 o problema é aproveitar-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 paginas de dados da tabela. --A tabela sysindexes porem guarda uma linha para cada indice da tabela. Portanto devemos pegar apenas --as linhas referentes a tabela. Para isso devemos fazer 2 testes : O campo indid deve ser 0 ou 1, --valores referentes a tabela sem índice ou ao indice clustered. 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 substring(object_name(id),1,30),rowcnt,dpages*8 as tamanho from sysindexes where indid in (1,0) and objectproperty(id,'isusertable')=1  order by rowcnt desc
Fonte/Autor/link

AUTOR: retirado da internet mas não me recordo o link. Caso alguém seja o autor favor postar o link para que os créditos possam ser atribuido.

 

Dúvidas, criticas, contribuições, correções e adições serão bem vindas.

Share this post


Link to post
Share on other sites

jothaz, corrigindo este codigo, ele traz somente o tamanho dos indices.

Para verificar o tamanho das tabelas de uma database:

create table #temp ([name] varchar(1000), [rows] varchar(1000), [reserved] varchar(1000), 
[data] varchar(1000), 
[index_size] varchar(1000), [unsed] varchar(1000))

insert into #temp

EXEC sp_MSforeachTable @command1="print '>>>Tabela: ?' ", 
											   @command2="sp_spaceused '?' "

select * from #temp

drop table #temp

Pode-se observar que utilizei a procedure sp_MSforeachTable que lista todas as tabelas de uma database.

 

Abçs

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.