Maison > base de données > tutoriel mysql > Comment la pagination des jeux de clés peut-elle optimiser les requêtes PostgreSQL avec des décalages importants ?

Comment la pagination des jeux de clés peut-elle optimiser les requêtes PostgreSQL avec des décalages importants ?

Barbara Streisand
Libérer: 2025-01-13 19:21:44
original
555 Les gens l'ont consulté

How Can Keyset Pagination Optimize PostgreSQL Queries with Large Offsets?

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>
Copier après la connexion

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>
Copier après la connexion

Remarques importantes :

  • La (vote, id) combinaison doit être unique pour garantir des résultats cohérents.
  • La direction de la clause ORDER BY doit correspondre à la direction de l'index.
  • Cette méthode ne convient pas aux requêtes avec des directions 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!

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