Améliorer les performances de pagination PostgreSQL sur des tables massives
Récupérer des données paginées à partir de grandes tables PostgreSQL (millions de lignes) à l'aide de OFFSET
peut avoir un impact important sur la vitesse des requêtes. Cet article présente une stratégie d'optimisation supérieure : la pagination des jeux de clés.
Pagination des jeux de clés : une approche plus efficace
La pagination du jeu de clés évite les pièges de performances de OFFSET
en exploitant les valeurs de la dernière ligne de la page précédente. Voici la requête :
<code class="language-sql">SELECT * FROM big_table WHERE (vote, id) > (vote_x, id_x) ORDER BY vote, id LIMIT n;</code>
vote_x
et id_x
représentent les vote
et id
de la dernière ligne de la page précédente. Cela permet à la base de données de sauter efficacement des lignes, améliorant considérablement les performances par rapport à OFFSET
.
Amélioration de l'index
Pour des performances optimales, créez un index sur les colonnes utilisées dans la clause WHERE
:
<code class="language-sql">CREATE INDEX vote_order_asc ON big_table (vote, id);</code>
Remarques importantes :
(vote, id)
combinaison doit être unique pour garantir des résultats cohérents.ORDER BY
doit correspondre à la direction de l'index.ORDER BY
mixtes ou contradictoires.Lectures complémentaires :
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!