La clause `OFFSET` dans PostgreSQL est utilisée pour sauter un nombre spécifié de lignes avant de commencer à retourner les lignes d'une requête. Ceci est particulièrement utile pour mettre en œuvre la pagination dans les ensembles de résultats.
Utilisation
La clause `OFFSET` est typiquement utilisée en conjonction avec `LIMIT` pour paginer les résultats de la requête en sautant un nombre spécifié de lignes. Elle est placée après la clause `ORDER BY` pour s'assurer que les lignes sont sautées dans un ordre prévisible.
SELECT column1, column2,...FROM table_name
[ORDERBY column]OFFSET number_of_rows;Propulsé par
Dans cette syntaxe, `OFFSET nombre_de_rangs` spécifie combien de lignes doivent être omises au début du jeu de résultats.
Cette requête ignore les 10 premiers tableaux du tableau `employees` et renvoie tous les tableaux suivants.
2. Décalage avec limite
SELECT*FROM products
ORDERBY product_id
OFFSET5LIMIT10;Propulsé par
La requête saute les 5 premières lignes et renvoie les 10 lignes suivantes, fournissant un ensemble de résultats paginés ordonnés par `product_id`.
3. Décalage avec une requête complexe
SELECT customer_id, order_date
FROM orders
WHERE order_status ='completed'ORDERBY order_date DESCOFFSET20LIMIT5;Propulsé par
Cet exemple renvoie 5 lignes après avoir ignoré les 20 premières lignes de commandes terminées, triées par `order_date` dans l'ordre décroissant.
Conseils et bonnes pratiques
Combiner avec `LIMIT`. Utilisez `OFFSET` avec `LIMIT` pour une pagination efficace et pour éviter de récupérer des données inutiles.
Assurer la cohérence des commandes. Associez toujours `OFFSET` à `ORDER BY` pour garantir des résultats cohérents et prévisibles.
Considérations relatives à la performance. Soyez prudent avec les décalages importants car ils peuvent avoir un impact sur les performances puisque toutes les lignes jusqu'au point de décalage sont toujours traitées. Envisagez d'autres techniques de pagination si nécessaire.
Indexation à base zéro. Rappelez-vous que `OFFSET` est basé sur zéro, donc `OFFSET 0` retournera toutes les lignes sans en sauter aucune.
Autres méthodes de pagination. Pour les grands ensembles de données, envisagez d'utiliser des méthodes alternatives telles que les curseurs ou la pagination par jeu de clés, qui peuvent être plus efficaces en évitant le traitement d'un grand nombre de décalages.
La clause `OFFSET` dans PostgreSQL est utilisée pour sauter un nombre spécifié de lignes avant de commencer à retourner les lignes d'une requête. Ceci est particulièrement utile pour mettre en œuvre la pagination dans les ensembles de résultats.
Utilisation
La clause `OFFSET` est typiquement utilisée en conjonction avec `LIMIT` pour paginer les résultats de la requête en sautant un nombre spécifié de lignes. Elle est placée après la clause `ORDER BY` pour s'assurer que les lignes sont sautées dans un ordre prévisible.
Dans cette syntaxe, `OFFSET nombre_de_rangs` spécifie combien de lignes doivent être omises au début du jeu de résultats.
Exemples
1. Décalage de base
Cette requête ignore les 10 premiers tableaux du tableau `employees` et renvoie tous les tableaux suivants.
2. Décalage avec limite
La requête saute les 5 premières lignes et renvoie les 10 lignes suivantes, fournissant un ensemble de résultats paginés ordonnés par `product_id`.
3. Décalage avec une requête complexe
Cet exemple renvoie 5 lignes après avoir ignoré les 20 premières lignes de commandes terminées, triées par `order_date` dans l'ordre décroissant.
Conseils et bonnes pratiques