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 :
mysql_num_rows peut vous être utile. p>
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.
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. P>
Si vous acceptez un nombre approximatif d'enregistrements, vous pouvez utiliser la sortie de " VERION SIMPLIFIÉE DU CODE est P> expliquer code>".
$result = mysql_query('explain SELECT count(*) from TABLE_NAME');
$row = mysql_fetch_assoc($result);
echo $row['rows'];
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';
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 où code>. Si vous utilisez
où code>, peut-être un
Compte (1) code> 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)
Voir aussi: TOcker .ca / 2013/05/02 / plus rapide-way-a-count-rows-in-a-table.ht ml