0Pricing
SQL Academy · Leçon

LIMIT, OFFSET et bases de la pagination

Paginez de grands ensembles de résultats avec LIMIT et OFFSET, comprenez les compromis de performance et utilisez la pagination par clé pour faire défiler les résultats de manière stable.

LIMIT, OFFSET et bases de la pagination est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.

LIMIT : limiter le résultat

LIMIT n renvoie au maximum n lignes :

SELECT * FROM products
ORDER BY created_at DESC
LIMIT 10;

OFFSET : ignorer les N premières lignes

OFFSET k ignore les k premières lignes :

-- Rows 11–20 (the second page of 10):
SELECT * FROM products
ORDER BY created_at DESC
LIMIT 10 OFFSET 10;

Pagination = LIMIT + OFFSET

Le modèle classique avec numéros de page :

-- Page p (1-based), page size s:
SELECT * FROM articles
ORDER BY published_at DESC
LIMIT s OFFSET (p - 1) * s;

Pourquoi OFFSET ralentit

OFFSET lit quand même en interne chaque ligne ignorée :

  • Page 1 de 10 → lit 10 lignes
  • Page 1000 de 10 → lit 10 000 lignes
  • Page 1 000 000 → lit dix millions de lignes

OFFSET est en O(offset). Pour les pages éloignées, cette méthode est inutilisable.

Pagination par clé (« méthode de recherche »)

Avancez d’une page en mémorisant la dernière clé de tri consultée :

-- First page:
SELECT * FROM articles
ORDER BY published_at DESC, id DESC
LIMIT 20;

-- Next page — pass the last seen (published_at, id):
SELECT * FROM articles
WHERE (published_at, id) < ($1, $2)
ORDER BY published_at DESC, id DESC
LIMIT 20;

Pourquoi la pagination par clé est plus rapide

La pagination par clé utilise un parcours d’intervalle d’index : elle saute directement à la ligne suivant la dernière ligne consultée, lit N lignes, puis s’arrête. Le coût est en O(taille de page), quelle que soit la profondeur atteinte.

LIMIT sans ORDER BY n’est pas déterministe

Règle générale : associez toujours LIMIT à ORDER BY. Sinon, la base de données peut renvoyer des lignes différentes à chaque appel.

-- Wrong — results may vary between runs:
SELECT * FROM events LIMIT 10;

-- Right:
SELECT * FROM events ORDER BY id DESC LIMIT 10;

Comptages totaux et pagination

Une interface utilisateur a parfois besoin du nombre total de lignes. Une requête COUNT(*) séparée est la solution la plus simple, mais elle peut être coûteuse sur les grandes tables :

SELECT COUNT(*) FROM articles WHERE author_id = $1;

-- Alternative for huge tables: estimate from pg_class.reltuples or use approximate counts.

FETCH FIRST (SQL standard)

Syntaxe SQL standard équivalente à LIMIT :

SELECT * FROM products
ORDER BY id
FETCH FIRST 10 ROWS ONLY;

-- With offset:
-- OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY

Curseurs pour les ensembles de résultats volumineux

Pour exporter des millions de lignes, utilisez un curseur de base de données ou un pilote en flux continu plutôt que des boucles LIMIT/OFFSET :

BEGIN;
DECLARE big_cursor CURSOR FOR
  SELECT * FROM events ORDER BY id;
FETCH 1000 FROM big_cursor;
-- ...
CLOSE big_cursor;
COMMIT;

Quand OFFSET convient

OFFSET convient aux pages peu profondes (pages 1 à 10 d’une interface utilisateur) ou aux petites tables. Pour une pagination profonde, un défilement infini ou des API, utilisez la pagination par clé.

Récapitulatif

LIMIT et OFFSET permettent de paginer les ensembles de résultats.

  • Associez-les toujours à ORDER BY
  • OFFSET ralentit avec la profondeur — passez à la pagination par clé pour les grandes pages
  • FETCH FIRST est l’équivalent standard

Vérification rapide

Quelle est la méthode la plus efficace pour paginer en profondeur dans une grande table ?

Questions Fréquemment Posées

La leçon « LIMIT, OFFSET et bases de la pagination » est-elle gratuite ?

Oui — le texte complet de « LIMIT, OFFSET et bases de la pagination » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « LIMIT, OFFSET et bases de la pagination » ?

Paginez de grands ensembles de résultats avec LIMIT et OFFSET, comprenez les compromis de performance et utilisez la pagination par clé pour faire défiler les résultats de manière stable. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer SQL Academy ?

Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « LIMIT, OFFSET et bases de la pagination » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?

Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Sélectionner des colonnes et des expressions
  2. Filtres WHERE : opérateurs de comparaison et de logique
  3. ORDER BY sur une ou plusieurs colonnes
  4. LIMIT, OFFSET et bases de la pagination
← Retour à SQL Academy