Performances SQL : SELECT SQL_CALC_FOUND_ROWS vs. SELECT COUNT(*)
Considérez un scénario dans lequel vous devez limiter le nombre de lignes renvoyées par une requête SQL à des fins de pagination. Pour déterminer le nombre total d'enregistrements, il existe deux méthodes principales :
Méthode 1 : SQL_CALC_FOUND_ROWS
SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE id > 100 LIMIT 10; SELECT FOUND_ROWS();
Méthode 2 : SELECT COUNT(*)
SELECT * FROM table WHERE id > 100 LIMIT 10; SELECT COUNT(*) FROM table WHERE id > 100;
La question se pose : quelle méthode est la plus efficace ?
La meilleure méthode : cela dépend
Selon le MySQL Performance Blog, il n'y a pas de réponse définitive. Peter Zaitsev, l'auteur du blog, suggère que la méthode optimale dépend de la configuration de l'index et d'autres facteurs.
Consensus général
Cependant, de nombreux commentaires en réponse au un article de blog semble indiquer que SQL_CALC_FOUND_ROWS est généralement plus lent que l'exécution de deux requêtes. La pénalité de performances signalée peut être importante, potentiellement jusqu'à 10 fois plus lente.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!