Une pagination efficace nécessite de connaître le nombre total de résultats pour afficher avec précision les contrôles de pagination. La méthode conventionnelle implique deux requêtes distinctes : une pour compter tous les résultats et une autre pour récupérer les données de la page actuelle. Cette approche peut cependant s'avérer inefficace.
PostgreSQL offre une solution supérieure exploitant les fonctions de fenêtre (disponible depuis la version 8.4). La fonction COUNT(*) OVER()
permet de récupérer à la fois le décompte total et les résultats paginés au sein d'une seule requête :
<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>
Il est crucial de noter que cette méthode, bien qu'élégante, peut avoir un impact sur les performances sur de très grandes tables en raison du calcul du nombre complet de lignes. Un examen attentif des compromis en matière de performances est nécessaire.
Pour améliorer les performances avec des ensembles de données volumineux, envisagez ces alternatives :
GET DIAGNOSTICS
et pg_num_rows
.OFFSET
sur des tables étendues pour améliorer l'efficacité. Cela peut impliquer des stratégies d'indexation ou des structures de requête alternatives.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!