Maison > base de données > tutoriel mysql > Comment puis-je récupérer efficacement les résultats totaux pour la pagination dans MySQL ?

Comment puis-je récupérer efficacement les résultats totaux pour la pagination dans MySQL ?

DDD
Libérer: 2024-11-23 21:29:10
original
189 Les gens l'ont consulté

How Can I Efficiently Retrieve Total Results for Pagination in MySQL?

Récupération efficace des résultats totaux pour la pagination avec MySQL

La pagination est une fonctionnalité cruciale qui améliore la navigation des utilisateurs dans de grands ensembles de données. Dans MySQL, cela est souvent réalisé en utilisant les clauses OFFSET et LIMIT pour récupérer un sous-ensemble spécifique de résultats. Cependant, pour déterminer le nombre total de pages requis, vous devez connaître le nombre total de résultats avant d'appliquer les paramètres de pagination.

Traditionnellement, les développeurs exécutaient la requête deux fois : une fois avec LIMIT pour récupérer le sous-ensemble et encore une fois. sans LIMITE pour compter les résultats. Cette approche peut entraîner une consommation inutile de ressources. Heureusement, il existe une solution plus efficace utilisant l'astuce SQL_CALC_FOUND_ROWS :

Utilisation de SQL_CALC_FOUND_ROWS :

Pour optimiser le processus, ajoutez SQL_CALC_FOUND_ROWS à votre requête SQL d'origine :

SELECT *
FROM table_name
WHERE category_id = 1
ORDER BY id
LIMIT 10 OFFSET 20
Copier après la connexion

Cela indique à MySQL de calculer le nombre total des lignes correspondantes avant d'appliquer les paramètres OFFSET et LIMIT.

Récupérer le nombre total :

Après avoir exécuté la requête, vous pouvez récupérer le nombre total de lignes correspondantes à l'aide du Instruction SQL suivante :

SELECT FOUND_ROWS()
Copier après la connexion

Calcul Pages :

Avec le nombre total et le paramètre LIMIT connus, vous pouvez facilement calculer le nombre total de pages :

$totalPages = ceil($totalCount / $limit);
Copier après la connexion

Exemple de code :

Dans CodeIgniter, vous pouvez utiliser l'extrait de code suivant, en supposant que vous avez déjà défini votre requête dans le $query variable :

$query->sql_calc_found_rows();
$result = $query->get();

$totalPages = ceil($this->db->query('SELECT FOUND_ROWS()')->row('FOUND_ROWS()') / $limit);
Copier après la connexion

En tirant parti de SQL_CALC_FOUND_ROWS, vous pouvez récupérer efficacement le nombre total de résultats sans exécuter de requête supplémentaire, économisant ainsi de précieuses ressources de calcul et améliorant les performances de votre fonction de pagination.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal