Maison > base de données > tutoriel mysql > le corps du texte

Comment obtenir efficacement le nombre de lignes dans les requêtes MySQL paginées avec SQL_CALC_FOUND_ROWS ?

Barbara Streisand
Libérer: 2024-11-01 03:58:28
original
344 Les gens l'ont consulté

How to Efficiently Get Row Count in Paginated MySQL Queries with SQL_CALC_FOUND_ROWS?

Utilisation de SQL_CALC_FOUND_ROWS pour obtenir le nombre de lignes malgré LIMIT

Lors de l'exécution de requêtes MySQL complexes avec pagination (clauses "LIMIT"), obtenir le nombre total de lignes peut être difficile. Exécuter la requête deux fois, une fois sans la clause LIMIT pour le nombre total, peut s'avérer inefficace.

Heureusement, MySQL a introduit l'option SQL_CALC_FOUND_ROWS, qui vous permet de calculer le nombre total de lignes tout en utilisant la clause LIMIT. Voici comment cela fonctionne :

  1. Ajoutez SQL_CALC_FOUND_ROWS à votre requête principale :
    Juste après la clause SELECT, ajoutez SQL_CALC_FOUND_ROWS à votre requête principale.
  2. Exécutez une deuxième requête pour obtenir le nombre total de lignes :
    Exécutez une deuxième requête à l'aide de la fonction FOUND_ROWS() pour récupérer le nombre total de lignes.

Exemples de requêtes :

<code class="sql">-- Main query with SQL_CALC_FOUND_ROWS
SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;

-- Second query to get row count
SELECT FOUND_ROWS();</code>
Copier après la connexion

Limitations et alternatives :

Bien que SQL_CALC_FOUND_ROWS fournisse une solution pratique, notez que son utilisation est obsolète dans MySQL 8.0.17. Dans la plupart des cas, exécuter la requête deux fois est toujours plus rapide.

Comme alternative, MySQL 8.0 introduit les options optimisées suivantes pour obtenir le nombre de lignes :

  • ROW_COUNT() Fonction : Renvoie le nombre de lignes renvoyées par la requête précédente.
  • COUNT() Fonction : Utilisez COUNT(*) comme sous-requête pour calculer le nombre de lignes.

En utilisant ces techniques, les développeurs peuvent récupérer efficacement le nombre total de lignes dans leurs requêtes MySQL paginées sans compromettre la vitesse ou les performances.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!