Optimiser la récupération du nombre de résultats de données de pagination
Lors de la mise en œuvre de la fonction de pagination de récupération de données, la détermination du nombre total de pages est cruciale pour un rendu précis du contrôle de pagination. Une approche courante consiste à exécuter deux requêtes : une utilisant la fonction COUNT() pour obtenir le nombre total de résultats et une autre utilisant la clause LIMIT pour afficher les données de la page actuelle.
Cependant, cette approche est inefficace. PostgreSQL a introduit des fonctions de fenêtre depuis la version 8.4, offrant une meilleure solution.
Utiliser les fonctions de fenêtre
La fonction fenêtre COUNT(*) OVER() permet de calculer le nombre total de résultats dans une requête tout en obtenant des données limitées. Un exemple est le suivant :
<code class="language-sql">SELECT foo, COUNT(*) OVER() AS full_count FROM bar WHERE <some condition=""> ORDER BY <some col=""> LIMIT <pagesize> OFFSET <offset>;</code>
La colonne full_count fournit le nombre total de résultats avant l'application des clauses LIMIT et OFFSET. Notez que cette approche peut avoir un impact sur les performances car elle nécessite de compter toutes les lignes éligibles. L'impact est minime pour les tables plus petites ou lorsque full_count est inférieur à OFFSET LIMIT. Toutefois, pour des ensembles de résultats plus volumineux, il vaut la peine d’envisager des alternatives.
Méthode alternative pour le décompte final
Outre les fonctions de fenêtre, il existe d'autres moyens de récupérer le décompte final sans calculer le décompte complet :
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!