10
votes

Mysql obtenir le nombre de lignes dans une table innodub

J'ai une table en utilisant Innodb. Je sais que la table a environ 89 millions de rangées. Utiliser

SELECT COUNT(*) FROM table;


4 Réponses :


-7
votes

mysql_num_rows peut vous être utile.


1 commentaires

Cela ne fait que donner le nombre de lignes dans un ensemble de résultats tampon? Je cherche le nombre de lignes dans la table complète.



4
votes

Si le tableau est lu fréquemment et mis à jour rarement, vous pouvez envisager de créer une table de statistiques mis à jour via déclenche lors de la modification de la table.


0 commentaires

6
votes

Si vous acceptez un nombre approximatif d'enregistrements, vous pouvez utiliser la sortie de " expliquer code>".

VERION SIMPLIFIÉE DU CODE est P>

$result = mysql_query('explain SELECT count(*) from TABLE_NAME');
$row = mysql_fetch_assoc($result);
echo $row['rows'];


0 commentaires

22
votes

Si vous allez bien avec le numéro estimé et que vous ne voulez tout simplement pas gâcher avec l'état d'exécution code> Statut de la table Code> à partir de PHP, vous pouvez utiliser les informations_SCHEMA DB:

SELECT TABLE_ROWS FROM information_schema.tables
WHERE TABLE_SCHEMA = 'my_db_name' 
AND TABLE_NAME = 'my_table_name';


4 commentaires

Je suis curieux de savoir comment c'est "estimé". Quelqu'un pourrait-il me fournir plus d'informations à ce sujet? Pourquoi ce nombre ne serait-il pas complètement précis? Merci.


@Mmiller - Vous pouvez tout lire ici: dev.mysql.com/doc/innodb/1.1/fr/...


+1 Très bien pour quand nous n'avons pas besoin d'utiliser . Si vous utilisez , peut-être un Compte (1) est la meilleure prise (je ne sais pas si cela fait un tampon de toutes les lignes affichées).


@Pacerier - Bien sûr. Cette réponse est une optimisation facultative si une estimation est correcte. Sinon, il n'y a pas d'échapper à une table complète (AFAIK)