Quelle est la commande MySQL pour récupérer le nombre d'enregistrements dans une table?
167
SELECT COUNT(*) FROM fooTable;
comptera le nombre de lignes du tableau.
Voir le manuel de référence .
tablename
COUNT(1)
, ce sera le moyen le plus rapide.Parce que personne ne l'a mentionné:
répertorie tous les tableaux avec des informations supplémentaires, y compris les lignes estimées pour chaque tableau. C'est ce que phpMyAdmin utilise pour sa page de base de données.
Ces informations sont disponibles dans MySQL 4, probablement dans MySQL 3.23 depuis trop longtemps dans la base de données des schémas d'information préalable.
METTRE À JOUR:
Puisqu'il y a eu un vote négatif , je tiens à préciser que le nombre indiqué est estimé pour InnoDB et TokuDB et qu'il est tout à fait correct pour les moteurs de stockage MyISAM et Aria (Maria).
Selon la documentation :
C'est également le moyen le plus rapide de voir le nombre de lignes sur MySQL, car une requête comme:
Effectuer une analyse complète de la table ce qui pourrait être une opération très coûteuse qui pourrait prendre des heures sur un grand serveur à charge élevée. Il augmente également les E / S disque.
La même opération peut bloquer la table pour les insertions et les mises à jour - cela se produit uniquement sur les moteurs de stockage exotiques.
InnoDB et TokuDB sont OK avec le verrouillage de table, mais nécessitent une analyse complète de la table.
la source
Nous avons un autre moyen de connaître le nombre de lignes dans une table sans exécuter une
select
requête sur cette table.Chaque instance MySQL a une base de données information_schema. Si vous exécutez la requête suivante, elle donnera des détails complets sur la table, y compris le nombre approximatif de lignes dans cette table.
la source
Simplement:
la source
la source
Faites juste un
Vous pouvez spécifier des conditions avec un Où après cela
la source
Si vous avez plusieurs champs dans votre table et que votre table est énorme, il vaut mieux NE PAS UTILISER
*
car cela charge tous les champs en mémoire et l'utilisation de ce qui suit aura de meilleures performancesla source
Comme mentionné par Santosh , je pense que cette requête est suffisamment rapide, sans interroger toute la table.
Pour renvoyer le résultat entier du nombre d'enregistrements de données, pour un nom de table spécifique dans une base de données particulière :
la source
count(*)
avec une prise en compte des performancesla source
Vous devez utiliser count () renvoie le nombre de lignes qui correspond à un critère spécifié
la source
Si vous avez une clé primaire ou une clé / index unique, la méthode la plus rapide possible (Testé avec 4 millions de tables de lignes)
puis obtenir le champ de cardinalité (il est proche de l'instant)
Temps où de 0,4 s à 0,0001 ms
la source