Lorsque vous COUNT(*)
il prend en compte les index de colonnes, de sorte qu'il sera le meilleur résultat. Mysql MyISAM moteur stocke le nombre de lignes, il doensn pas compter toutes les lignes à chaque fois que vous essayez de compter toutes les lignes. (basé sur la clé primaire de la colonne)
À l'aide de PHP pour le nombre de lignes n'est pas très malin, parce que vous avez à envoyer les données de mysql pour php. Pourquoi le faire quand vous pouvez obtenir le même sur la base de données mysql?
Si l' COUNT(*)
est lent, vous devez exécuter EXPLAIN
sur la requête, et de vérifier si des index sont vraiment utilisés, et où doivent-ils être ajoutés.
La suite n'est pas la plus rapide façon, mais il y a un cas, où l' COUNT(*)
n'a pas vraiment d'ajustement lorsque vous commencez à grouper les résultats, vous pouvez exécuter problème, où COUNT
n'a pas vraiment compter toutes les lignes.
La solution est - SQL_CALC_FOUND_ROWS
. Ceci est habituellement utilisé lorsque vous sélectionnez des lignes, mais encore faut-il savoir le total du nombre de lignes (par exemple, pour la pagination).
Lorsque vous sélectionnez des lignes de données, ajoutez simplement l' SQL_CALC_FOUND_ROWS
mot-clé après avoir SÉLECTIONNER:
SELECT SQL_CALC_FOUND_ROWS [needed fields or *] FROM table LIMIT 20 OFFSET 0;
Après avoir sélectionné besoin de lignes, vous pouvez obtenir le comte avec cette requête:
SELECT FOUND_ROWS();
FOUND_ROWS()
doit être appelé immédiatement après la sélection de la requête.