C'est un problème connu que innodb est lent dans
SELECT count(*) FROM Table
J'ai donc évité cela. Mais je remarque que chaque fois que je me connecte à phpmyadmin, il exécutera automatiquement un count(*)
pour ma table innodb avec 19k lignes, ce qui peut prendre jusqu'à une minute pour s'exécuter. Pourtant, il ne l'initie pas count(*)
pour l'autre table innodb avec 4 millions de lignes.
Un autre indice, en phpmyadmin, sous la colonne Records, le nombre d'enregistrements pour la table de 19k lignes affiche la valeur exacte tandis que la table de 4 millions de lignes affiche une env.
Je comprends que la table innodb donne une estimation du nombre de lignes. Mais il semble que pour une table plus petite, dans ce cas avec 19k lignes, phpmyadmin décide de faire un count(*)
au lieu de simplement donner une estimation.
La question est, existe-t-il un moyen d'empêcher phpmyadmin de faire un tel compte sur ma table innodb? Il est normal de simplement donner une estimation au lieu de faire un nombre de lignes coûteux chaque fois que je rafraîchis mon écran phpmyadmin.
20000
par un nombre plus petit, par exemple300
, enregistrez le fichier, actualisez phpmyadmin et vous êtes prêt à partir.Réponses:
Modifiez config.inc.php et modifiez le paramètre de MaxExactCount .
la source
phpMyAdmin ne fera un réel que
select count(*)
si le nombre estimé de lignes se situe dans le seuil défini (la valeur par défaut est 500k selon votre version):Réglez simplement le seuil sur un nombre plus petit pour éviter les
select count(*)
s inutiles .la source