Como listar a contagem de linhas de cada tabela no banco de dados. Algum equivalente de
select count(*) from table1
select count(*) from table2
...
select count(*) from tableN
Vou postar uma solução, mas outras abordagens são bem-vindas
sql-server
database
Kristof
fonte
fonte
dtProperties
esta; como essas são tabelas de "sistema", não quero informar sobre elas.Um trecho que encontrei em http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=21021 que me ajudou:
fonte
JOIN
sintaxe #from sysobjects t inner join sysindexes i on i.id = t.id and i.indid in (0,1) where t.xtype = 'U'
Para obter essas informações no SQL Management Studio, clique com o botão direito do mouse no banco de dados e selecione Relatórios -> Relatórios Padrão -> Uso do Disco por Tabela.
fonte
fonte
Como visto aqui, isso retornará contagens corretas, onde os métodos que usam as tabelas de metadados retornarão apenas estimativas.
fonte
Resultado:
fonte
Felizmente, o SQL Server Management Studio fornece uma dica sobre como fazer isso. Faça isso,
Interrompa o rastreamento e veja o que o TSQL é gerado pela microsoft.
Provavelmente, na última consulta, você verá uma instrução começando com
exec sp_executesql N'SELECT
ao copiar o código executado no visual studio, você notará que esse código gera todos os dados que os engenheiros da microsoft usaram para preencher a janela de propriedades.
quando você faz modificações moderadas nessa consulta, chega a algo assim:
Agora, a consulta não está perfeita e você pode atualizá-la para atender a outras perguntas que você possa ter. O ponto é que você pode usar o conhecimento da Microsoft para obter a maioria das perguntas que você possui, executando os dados de seu interesse e rastreando o TSQL gerado usando o criador de perfil.
Eu meio que gosto de pensar que os engenheiros da MS sabem como o servidor SQL funciona e, ele gerará TSQL que funciona em todos os itens com os quais você pode trabalhar usando a versão no SSMS que você está usando, por isso é muito bom em uma grande variedade de versões pré-existentes, atuais e futuro.
E lembre-se, não apenas copie, tente entendê-lo, senão você pode acabar com a solução errada.
Walter
fonte
Essa abordagem usa a concatenação de strings para produzir uma declaração com todas as tabelas e suas contagens dinamicamente, como nos exemplos dados na pergunta original:
Finalmente, isso é executado com
EXEC
:fonte
A maneira mais rápida de localizar a contagem de linhas de todas as tabelas no SQL Refreence ( http://www.codeproject.com/Tips/811017/Fastest-way-to-find-row-count-of-all-tables-in-SQL )
fonte
A primeira coisa que veio à mente foi usar sp_msForEachTable
que não lista os nomes das tabelas, portanto, pode ser estendido para
O problema aqui é que, se o banco de dados tiver mais de 100 tabelas, você receberá a seguinte mensagem de erro:
Então acabei usando a variável de tabela para armazenar os resultados
fonte
A resposta aceita não funcionou para mim no Azure SQL, aqui está uma que funcionou, é super rápida e fez exatamente o que eu queria:
fonte
Esse script sql fornece o esquema, o nome da tabela e a contagem de linhas de cada tabela em um banco de dados selecionado:
Ref: https://blog.sqlauthority.com/2017/05/24/sql-server-find-row-count-every-table-database-efficiently/
Outra maneira de fazer isso:
fonte
Eu acho que a maneira mais curta, rápida e simples seria:
fonte
Você pode tentar o seguinte:
fonte
fonte
Nesta pergunta: /dba/114958/list-all-tables-from-all-user-databases/230411#230411
Adicionei contagem de registros à resposta fornecida por @Aaron Bertrand que lista todos os bancos de dados e todas as tabelas.
fonte
Você pode copiar, colar e executar esse trecho de código para obter todas as contagens de registros em uma tabela. Nota: O código é comentado com instruções
Eu testei esse código e funciona bem no SQL Server 2014.
fonte
Quero compartilhar o que está funcionando para mim
O banco de dados está hospedado no Azure e o resultado final é:
Crédito: https://www.mssqltips.com/sqlservertip/2537/sql-server-row-count-for-all-tables-in-a-database/
fonte
Se você usa MySQL> 4.x, pode usar isto:
Lembre-se de que, para alguns mecanismos de armazenamento, TABLE_ROWS é uma aproximação.
fonte
Aqui
indid=1
significa um índice CLUSTERED eindid=0
é um HEAPfonte