Maison > base de données > tutoriel mysql > Comment puis-je obtenir efficacement le nombre total de résultats dans la pagination MySQL tout en utilisant LIMIT et OFFSET ?

Comment puis-je obtenir efficacement le nombre total de résultats dans la pagination MySQL tout en utilisant LIMIT et OFFSET ?

Linda Hamilton
Libérer: 2024-11-27 11:04:12
original
256 Les gens l'ont consulté

How Can I Efficiently Get Total Result Count in MySQL Pagination While Using LIMIT and OFFSET?

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 ?, ?
Copier après la connexion

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()
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal