Maison >développement back-end >tutoriel php >Comment récupérer efficacement le nombre total de résultats dans PostgreSQL avant d'appliquer LIMIT ?
Dans la pagination de base de données, la détermination du nombre total de pages est cruciale pour le rendu des contrôles de pagination. Cependant, l’exécution de requêtes de comptage et de limite distinctes à cette fin peut s’avérer inefficace. Cet article explore une technique améliorée pour obtenir le nombre de résultats sans appliquer les limites de la base de données.
PostgreSQL versions 8.4 et ultérieures ont introduit des fonctions de fenêtre, permettant le calcul de fonctions d'agrégation sur des sous-ensembles partitionnés de données. Cela nous permet de déterminer le nombre total et de récupérer le résultat limité en une seule requête.
SELECT foo, COUNT(*) OVER() AS full_count FROM bar WHERE <some condition> ORDER BY <some col> LIMIT <pagesize> OFFSET <offset>;
Cependant, cette méthode peut entraîner une surcharge de performances supplémentaire car elle nécessite de compter toutes les lignes éligibles, ce qui peut avoir un impact sur les performances pour les grandes lignes. tableaux ou valeurs OFFSET proches du nombre total de lignes.
Dans les cas où les performances sont un problème, des approches alternatives peuvent être utilisées pour obtenir le nombre final de lignes concernées, indépendamment des applications OFFSET et LIMIT. La comptabilité interne de Postgres suit ces informations, auxquelles certains clients peuvent accéder.
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!