Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenir le nombre total de lignes lors de l'utilisation de LIMIT ?

Heureusement depuis MySQL 4.0.0 vous pouvez utiliser SQL_CALC_FOUND_ROWS option dans votre requête qui indiquera à MySQL de compter le nombre total de lignes sans tenir compte de LIMIT clause. Vous devez toujours exécuter une deuxième requête afin de récupérer le nombre de lignes, mais c'est une requête simple et pas aussi complexe que votre requête qui a récupéré les données. L'utilisation est assez simple. Dans votre requête principale, vous devez ajouter SQL_CALC_FOUND_ROWS option juste après SELECT et dans la deuxième requête, vous devez utiliser FOUND_ROWS() fonction pour obtenir le nombre total de lignes. Les requêtes ressembleraient à ceci :

SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;

SELECT FOUND_ROWS();

La seule limitation est que vous devez appeler la deuxième requête immédiatement après la première car SQL_CALC_FOUND_ROWS n'enregistre le nombre de lignes nulle part.Bien que cette solution nécessite également deux requêtes, elle est beaucoup plus rapide, car vous n'exécutez la requête principale qu'une seule fois.Vous pouvez en savoir plus sur SQL_CALC_FOUND_ROWS et FOUND_ROWS() dans la documentation MySQL.

MODIF : Vous devez noter que dans la plupart des cas, exécuter la requête deux fois est en fait plus rapide que SQL_CALC_FOUND_ROWS . voir ici

MODIFICATION 2019 :

Le modificateur de requête SQL_CALC_FOUND_ROWS et la fonction FOUND_ROWS() qui l'accompagne sont obsolètes à partir de MySQL 8.0.17 et seront supprimés dans une future version de MySQL.

https://dev.mysql.com /doc/refman/8.0/en/information-functions.html#function_found-rows

Il est recommandé d'utiliser COUNT à la place

SELECT * FROM tbl_name WHERE id > 100 LIMIT 10;
SELECT COUNT(*) WHERE id > 100;