Maison >base de données >tutoriel mysql >Pagination SQL : `SELECT SQL_CALC_FOUND_ROWS` vs `SELECT COUNT(*)` - Qu'est-ce qui est le plus rapide ?

Pagination SQL : `SELECT SQL_CALC_FOUND_ROWS` vs `SELECT COUNT(*)` - Qu'est-ce qui est le plus rapide ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-12 17:28:11392parcourir

SQL Pagination: `SELECT SQL_CALC_FOUND_ROWS` vs. `SELECT COUNT(*)` - Which is Faster?

SELECT SQL_CALC_FOUND_ROWS vs. SELECT COUNT(*) pour compter les lignes

Lors de la pagination des données avec SQL, deux méthodes existent pour déterminer l'enregistrement total nombre : SQL_CALC_FOUND_ROWS et SELECT COUNT(*). Quelle approche est plus rapide ?

Méthode 1 : SQL_CALC_FOUND_ROWS

Cette méthode ajoute l'option SQL_CALC_FOUND_ROWS à l'instruction SELECT initiale. Après avoir exécuté cette instruction, vous pouvez récupérer le nombre total de lignes en exécutant SELECT FOUND_ROWS().

Méthode 2 : SELECT COUNT(*)

Au lieu d'utiliser SQL_CALC_FOUND_ROWS, cette méthode exécute la requête d'origine sans modifications. Le nombre total de lignes est ensuite obtenu en exécutant une requête distincte : SELECT COUNT(*) FROM table.

Comparaison des performances

Le choix optimal dépend de facteurs spécifiques tels que configuration des index et des bases de données. Selon le blog sur les performances MySQL, SQL_CALC_FOUND_ROWS peut présenter des performances variables, allant d'équivalentes à nettement plus lentes (jusqu'à 10 fois plus lentes) que l'exécution de requêtes distinctes.

Recommandation

De nombreuses les utilisateurs signalent que la méthode 2 (exécution de deux requêtes) donne généralement de meilleures performances. Cependant, il est conseillé de comparer les deux méthodes avec des ensembles de données représentatifs afin de déterminer l'approche optimale pour un environnement donné.

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