[SQL] Nombre d’enregistrements dans une table.
On a souvent besoin de connaitre le nombre d’enregistrements (rows) d’une table.
On peut bien sur faire une requête avec un count sur une colonne
SELECT COUNT(monid) FROM matable |
par contre, cette requête peut s’avérer très lente pour compter le nombre de lignes.
(Plus de 1 min pour une table de 2 500 000 lignes).
La requête suivante en s’appuyant sur la table sys.partitions permet d’obtenir le même résultat beaucoup plus rapidement.
SELECT ROWS FROM sys.partitions WHERE OBJECT_NAME(object_id) IN (matable) |
(Instantané pour une table de 2 500 000 lignes).
Petite variante permettant de connaitre la table ayant le plus d’enregistrement.
SELECT OBJECT_NAME(object_id), ROWS FROM sys.partitions WHERE ROWS=(SELECT MAX(ROWS) FROM sys.partitions) |
(Testé sous sql server 2008).
Voilà, j’espère que ces requêtes vous permettrons de comptabiliser efficacement vos données.
Et si vous avez envie d’en savoir plus sur SQL je vous invite aussi à lire :
- [SQL] Comment obtenir la liste des tables d’une bdd
- [SQL] Sélection aléatoire des lignes dans une table de bdd
Sources: