Maison  >  Article  >  développement back-end  >  Comment déterminer le nombre total de résultats dans MySQL avec décalage et limite lors de la pagination ?

Comment déterminer le nombre total de résultats dans MySQL avec décalage et limite lors de la pagination ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-23 12:12:01488parcourir

How to Determine Total Result Count in MySQL with Offset and Limit while Paginating?

Détermination du nombre total de résultats dans MySQL avec décalage et limite

La pagination est un aspect crucial du développement Web, permettant un affichage efficace de grands ensembles de données sur plusieurs pages. Lors de l'utilisation de décalages et de limites dans les requêtes MySQL, il est essentiel de déterminer le nombre total de résultats pour calculer la pagination requise.

Une approche consiste à exécuter la requête deux fois : une fois avec la limite pour récupérer les résultats à afficher, et encore une fois sans limite pour compter le nombre total de lignes. Cependant, cette méthode est inefficace et peut peser sur les ressources de la base de données.

Une solution plus efficace consiste à utiliser le mot-clé SQL_CALC_FOUND_ROWS. Ce mot-clé indique à MySQL de calculer le nombre total de lignes qui auraient été renvoyées sans la limite. Le nombre total peut ensuite être récupéré à l'aide de la fonction FOUND_ROWS().

Par exemple, considérons la requête suivante :

SELECT * FROM table_name ORDER BY id LIMIT 10 OFFSET 20;

Pour déterminer le nombre total de lignes, ajoutez SQL_CALC_FOUND_ROWS au début de la requête :

SELECT SQL_CALC_FOUND_ROWS * FROM table_name ORDER BY id LIMIT 10 OFFSET 20;

Après avoir exécuté cette requête, utilisez FOUND_ROWS() pour récupérer le nombre total :

$total_results = $this->db->query('SELECT FOUND_ROWS()')->row()->{'FOUND_ROWS()'};

Cette approche fournit un moyen efficace pour déterminer le nombre total de résultats sans avoir besoin d'une requête distincte. Il économise les ressources de calcul et garantit des performances optimales de la base de données, en particulier pour les grands ensembles 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!

Déclaration:
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