Maison >base de données >tutoriel mysql >Comment récupérer efficacement le nombre total de lignes avec la pagination dans MySQL ?

Comment récupérer efficacement le nombre total de lignes avec la pagination dans MySQL ?

DDD
DDDoriginal
2024-10-27 06:42:02583parcourir

 How to Efficiently Retrieve Total Row Count with Pagination in MySQL?

Obtention du nombre total de lignes avec LIMIT

Lors de l'exécution de requêtes SQL avec pagination, il est souvent nécessaire d'obtenir le nombre total de lignes. En règle générale, cela nécessite d'exécuter la requête deux fois, une fois sans la clause LIMIT pour déterminer le nombre total.

Cependant, il existe un moyen plus efficace d'y parvenir sans recourir à plusieurs requêtes.

SQL_CALC_FOUND_ROWS

Depuis MySQL 4.0.0, l'option SQL_CALC_FOUND_ROWS peut être utilisée. Il demande à MySQL de calculer le nombre total de lignes même lorsqu'une clause LIMIT est présente.

Pour utiliser cette option, ajoutez-la simplement après l'instruction SELECT dans la requête principale. Ensuite, exécutez une requête distincte pour récupérer le nombre de lignes à l'aide de la fonction FOUND_ROWS().

SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;

SELECT FOUND_ROWS();

Remarque : Bien que SQL_CALC_FOUND_ROWS nécessite deux requêtes, c'est généralement plus rapide que d'exécuter deux fois la requête principale. . Cependant, depuis MySQL 8.0.17, cette option est obsolète et sera supprimée dans une prochaine version.

Alternative : COUNT()

Comme alternative, vous Vous pouvez utiliser la fonction COUNT() dans une requête distincte pour obtenir le nombre total de lignes.

SELECT COUNT(*) FROM tbl_name WHERE id > 100;

Cette méthode nécessite également deux requêtes, mais il s'agit d'une approche plus récente et préférée.

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