Obtention de résultats totaux à l'aide du décalage et de la limite MySQL
La pagination implique la récupération de sous-ensembles de données à partir d'une base de données en fonction des valeurs de décalage et de limite. Cependant, pour déterminer le nombre total de pages, il est nécessaire de connaître le nombre total de résultats. Cet article présente une question de programmation relative à une méthode efficace pour calculer ce total.
Question :
En PHP/MySQL, un utilisateur implémentant la pagination rencontre le besoin de déterminer le nombre total de résultats pour une requête donnée, même en utilisant des paramètres de décalage et de limite. Le problème est que l’exécution d’une deuxième requête sans la contrainte limite de nombre de lignes peut s’avérer inutile en termes de calcul. Existe-t-il une approche plus respectueuse des ressources ?
Réponse :
Oui, il existe une solution optimisée pour ce scénario. En utilisant le mot-clé SQL_CALC_FOUND_ROWS au début de la requête initiale, MySQL effectuera un décompte automatique de toutes les lignes correspondantes, indépendamment des restrictions de décalage ou de limite. Cela élimine le besoin d'une deuxième requête.
Voici comment modifier votre requête avec SQL_CALC_FOUND_ROWS :
SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE category_id = ? LIMIT ?, ?
Une fois cette requête modifiée exécutée, vous pouvez exécuter la requête suivante pour récupérer le total nombre de lignes correspondantes :
SELECT FOUND_ROWS()
En utilisant SQL_CALC_FOUND_ROWS, vous pouvez efficacement récupérez à la fois les résultats paginés et le nombre total de résultats avec un seul appel à la base de données.
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!