web-dev-qa-db-fra.com

Compter les lignes de la table

Quelle est la commande MySQL pour récupérer le nombre d'enregistrements dans une table?

136
DJ.
SELECT COUNT(*) FROM fooTable;

comptera le nombre de lignes dans la table.

Voir le manuel de référence .

206
Gregory Pakosz

Parce que personne n'en a parlé:

show table status;

répertorie toutes les tables avec des informations supplémentaires, y compris des lignes estimées pour chaque table. C'est ce que phpMyAdmin utilise pour sa page de base de données.

Cette information est disponible dans MySQL 4, probablement dans MySQL 3.23 trop longtemps.

METTRE À JOUR

En raison du vote négatif, je tiens à préciser que le nombre indiqué est estimé uniquement pour InnoDB et TokuDB et qu'il est tout à fait correct pour les moteurs de stockage MyISAM et Aria (Maria).

C'est aussi le moyen le plus rapide de voir le nombre de lignes sur MySQL, car une requête comme celle-ci:

select count(*) from table;

Faire une table complète permet d’analyser ce qui pourrait être une opération très coûteuse pouvant prendre des heures sur un gros serveur à forte charge. Cela augmente également les E/S du disque.

La même opération peut bloquer la table pour les insertions et les mises à jour - cela se produit uniquement sur des moteurs de stockage exotiques.

InnoDB et TokuDB acceptent le verrouillage de table, mais nécessitent une analyse complète de la table.

52
Nick

Nous avons un autre moyen de connaître le nombre de lignes dans une table sans exécuter une requête select sur cette table.

Chaque instance MySQL a une base de données information_schema. Si vous exécutez la requête suivante, elle fournira des informations complètes sur la table, notamment le nombre de lignes approximatives de cette table.

select * from information_schema.TABLES where table_name = 'table_name'\G
24
Santhosh Tangudu

Simplement:

SELECT COUNT(*) FROM `tablename`
6
David Snabel-Caunt
select count(*) from YourTable
5
Adriaan Stander

Si vous avez plusieurs champs dans votre table et que votre table est énorme, il vaut mieux NE PAS UTILISER *, car elle charge tous les champs en mémoire et l'utilisation des éléments suivants aura de meilleures performances 

SELECT COUNT(1) FROM fooTable;
2
Yusef Mohamadi
$sql="SELECT count(*) as toplam FROM wp_postmeta WHERE meta_key='ICERIK' AND post_id=".$id;
$total = 0;
$sqls = mysql_query($sql,$conn);
if ( $sqls ) {
    $total = mysql_result($sqls, 0);
};
echo "Total:".$total;`
2
alpc

Il suffit de faire un

SELECT COUNT(*) FROM table;

Vous pouvez spécifier des conditions avec un Où après

SELECT COUNT(*) FROM table WHERE eye_color='brown';
1
Suanbit

Vous devez utiliser count () renvoie le nombre de lignes qui correspond à un critère spécifié

select count(*) from table_name;
1
rashedcs

Comme mentionné par Santosh, je pense que cette requête est suffisamment rapide, même si elle n’interroge pas tout le tableau.

Pour renvoyer un résultat entier du nombre d'enregistrements de données, pour un nom_table spécifique dans une base de données particulière:

select TABLE_ROWS from information_schema.TABLES where TABLE_SCHEMA = 'database' 
AND table_name='tablename';
0
Mohammad Kanan