Comment répertorier le nombre de lignes de chaque table dans la base de données. Un équivalent de
select count(*) from table1
select count(*) from table2
...
select count(*) from tableN
Je posterai une solution mais d'autres approches sont les bienvenues
sql-server
database
kristof
la source
la source
dtProperties
et ainsi de suite; puisque ce sont des tables "système", je ne veux pas en faire rapport.Un extrait que j'ai trouvé sur http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=21021 qui m'a aidé:
la source
JOIN
syntaxefrom sysobjects t inner join sysindexes i on i.id = t.id and i.indid in (0,1) where t.xtype = 'U'
Pour obtenir ces informations dans SQL Management Studio, cliquez avec le bouton droit sur la base de données, puis sélectionnez Rapports -> Rapports standard -> Utilisation du disque par table.
la source
la source
Comme on le voit ici, cela retournera des nombres corrects, où les méthodes utilisant les tables de métadonnées ne renverront que des estimations.
la source
Production:
la source
Heureusement, le studio de gestion SQL Server vous donne un indice sur la façon de procéder. Faites ça,
Arrêtez la trace et regardez ce que TSQL est généré par Microsoft.
Dans la dernière requête probablement, vous verrez une déclaration commençant par
exec sp_executesql N'SELECT
lorsque vous copiez le code exécuté dans Visual Studio, vous remarquerez que ce code génère toutes les données utilisées par les ingénieurs de Microsoft pour remplir la fenêtre de propriétés.
lorsque vous apportez des modifications modérées à cette requête, vous obtiendrez quelque chose comme ceci:
Maintenant, la requête n'est pas parfaite et vous pouvez la mettre à jour pour répondre à d'autres questions que vous pourriez avoir, le fait est que vous pouvez utiliser les connaissances de Microsoft pour accéder à la plupart des questions que vous avez en exécutant les données qui vous intéressent et tracer le TSQL généré à l'aide du profileur.
J'aime penser que les ingénieurs MS savent comment fonctionne SQL Server et qu'il générera TSQL qui fonctionne sur tous les éléments avec lesquels vous pouvez travailler en utilisant la version sur SSMS que vous utilisez, donc c'est assez bon sur une grande variété de versions prerviouse, actuelles et futur.
Et rappelez-vous, ne vous contentez pas de copier, essayez de le comprendre ainsi sinon vous pourriez vous retrouver avec la mauvaise solution.
Walter
la source
Cette approche utilise la concaténation de chaînes pour produire une instruction avec toutes les tables et leurs nombres de manière dynamique, comme les exemples donnés dans la question d'origine:
Enfin, cela est exécuté avec
EXEC
:la source
Méthode la plus rapide pour trouver le nombre de lignes de toutes les tables dans SQL Refreence ( http://www.codeproject.com/Tips/811017/Fastest-way-to-find-row-count-of-all-tables-in-SQL )
la source
La première chose qui m'est venue à l'esprit était d'utiliser sp_msForEachTable
qui ne répertorie pas les noms de table, il peut donc être étendu à
Le problème ici est que si la base de données contient plus de 100 tables, vous obtiendrez le message d'erreur suivant:
J'ai donc fini par utiliser une variable de table pour stocker les résultats
la source
La réponse acceptée n'a pas fonctionné pour moi sur Azure SQL, en voici une qui l'a fait, elle est super rapide et a fait exactement ce que je voulais:
la source
Ce script SQL donne le schéma, le nom de la table et le nombre de lignes de chaque table dans une base de données sélectionnée:
Réf: https://blog.sqlauthority.com/2017/05/24/sql-server-find-row-count-every-table-database-efficiently/
Une autre façon de procéder:
la source
Je pense que le moyen le plus court, le plus rapide et le plus simple serait:
la source
Vous pouvez essayer ceci:
la source
la source
De cette question: /dba/114958/list-all-tables-from-all-user-databases/230411#230411
J'ai ajouté le nombre d'enregistrements à la réponse fournie par @Aaron Bertrand qui répertorie toutes les bases de données et toutes les tables.
la source
Vous pouvez copier, coller et exécuter ce morceau de code pour obtenir tous les nombres d'enregistrements de table dans une table. Remarque: Le code est commenté avec des instructions
J'ai testé ce code et cela fonctionne très bien sur SQL Server 2014.
la source
Je veux partager ce qui fonctionne pour moi
La base de données est hébergée dans Azure et le résultat final est:
Crédit: https://www.mssqltips.com/sqlservertip/2537/sql-server-row-count-for-all-tables-in-a-database/
la source
Si vous utilisez MySQL> 4.x, vous pouvez utiliser ceci:
Gardez à l'esprit que pour certains moteurs de stockage, TABLE_ROWS est une approximation.
la source
Ici
indid=1
signifie un index CLUSTERED etindid=0
est un HEAPla source