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
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()
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);
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);
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!