Connaitre le nombre de résultat d’une requete MySQL sans la clause LIMIT

Voici aujourd’hui une petite astuce MySQL qui m’a bien aidé à alléger mes scripts !

Je vous mets en situation avec le cas typique : vous voulez afficher un grand nombre de résultat. La façon de procéder s’impose d’elle même, vous déciderez sûrement d’étaler ces résultats sur plusieurs pages. Sur chaque page vous n’affichez donc que n résultats, mais ils vous faudra néanmoins connaître le nombre de résultat total pour savoir combien de page afficher.

Vous aurez donc une requête du type :

SELECT * FROM table1 LIMIT n;

Et pour connaître le nombre de résultat total, vous vous servirez peut-être d’une requête du style :

SELECT COUNT(*) FROM table1;

Seulement voilà cette façon de faire utilise deux requêtes et est plutôt consommatrice en ressource ! Heureusement les développeurs de MySQL ont pensé à tout et la solution se trouve (comme toujours) dans la documentation. Celle ci est assez simple, elle consiste à modifier la première requête comme suit :

SELECT SQL_CALC_FOUND_ROWS * FROM table1 LIMIT n;

Puis à appeler la fonction FOUND_ROWS() :

SELECT FOUND_ROWS();

Cette dernière vous donnera le nombre de ligne de la première requête dans le cas où vous n’auriez pas utilisé la clause LIMIT et cela en consommant bien moins de ressource que pour la première solution !

Comme il est agréable de tomber sur des réponses si simple à nos problèmes ! J’espère que cela vous aidera si vous rencontrez le même un jour…

Tags : ,

Publicités

Laisser un commentaire

Votre adresse email ne sera jamais publiée ou revendue à des tiers. Les champs requis sont marqués d'un *.

*
*