LIMIT e OFFSET
Recuperi le prime N righe e implementi la paginazione
LIMIT e OFFSET è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.
Recuperare solo alcune righe
A volte non servono tutte le righe corrispondenti, ma solo le prime. LIMIT stabilisce il numero massimo di righe restituite dalla query.
In questo modo vengono restituiti al massimo 5 prodotti.
SELECT name, price
FROM products
LIMIT 5;LIMIT senza ORDER BY è casuale
LIMIT usato da solo restituisce alcune righe, ma non è definito quali. Lo combini sempre con ORDER BY, così il risultato è significativo e ripetibile.
-- The 5 newest orders, deterministically
SELECT id, total, created_at
FROM orders
ORDER BY created_at DESC
LIMIT 5;Saltare righe con OFFSET
OFFSET indica al database di saltare un certo numero di righe prima di restituire il risultato. Insieme a LIMIT, costituisce la base della paginazione.
In questo modo vengono saltate le prime 10 righe e restituite le 5 successive.
SELECT name, price
FROM products
ORDER BY name
LIMIT 5 OFFSET 10;Creare le pagine
Con pagine di 10 elementi, i numeri di pagina corrispondono agli offset nel modo seguente:
- Pagina 1:
OFFSET 0 - Pagina 2:
OFFSET 10 - Pagina 3:
OFFSET 20
La formula è OFFSET = (page - 1) * page_size.
-- Page 3 with 10 rows per page
SELECT name, price
FROM products
ORDER BY name
LIMIT 10 OFFSET 20;Ordine delle operazioni
Il database applica le clausole in questo ordine: filtra con WHERE, ordina con ORDER BY, quindi riduce il risultato con OFFSET e LIMIT.
In questo modo la paginazione avviene sempre sul risultato ordinato e filtrato.
SELECT name, price
FROM products
WHERE price > 0
ORDER BY price DESC
LIMIT 10 OFFSET 0;LIMIT ALL e OFFSET 0
LIMIT ALL significa "nessun limite" (equivale a omettere LIMIT) e OFFSET 0 non salta alcuna riga. Sono occasionalmente utili quando un valore viene costruito dinamicamente.
SELECT name
FROM products
ORDER BY name
LIMIT ALL OFFSET 0;La sintassi FETCH standard
PostgreSQL supporta anche la forma conforme allo standard SQL: OFFSET n ROWS FETCH NEXT m ROWS ONLY. Esegue esattamente le stesse operazioni di LIMIT/OFFSET, ma in modo più verboso.
SELECT name, price
FROM products
ORDER BY name
OFFSET 10 ROWS
FETCH NEXT 5 ROWS ONLY;Perché gli OFFSET elevati sono lenti
Un OFFSET elevato fa comunque sì che il database scandisca e scarti ogni riga saltata. OFFSET 100000 legge 100.000 righe solo per scartarle, diventando lento quando si raggiungono pagine molto avanzate.
-- Reads 100000 rows then discards them
SELECT id, name
FROM products
ORDER BY id
LIMIT 10 OFFSET 100000;Paginazione keyset
Un'alternativa più veloce è la paginazione keyset (seek). Invece di usare un offset, si memorizza l'ultima riga visualizzata e si richiedono le righe successive.
In questo modo si passa direttamente alla pagina successiva usando un indice, senza dover saltare righe.
-- Next page after the last seen id (e.g. 5000)
SELECT id, name
FROM products
WHERE id > 5000
ORDER BY id
LIMIT 10;Per pagine stabili serve un ordinamento stabile
Se il proprio ORDER BY contiene valori a pari merito, le righe possono cambiare ordine tra un caricamento e l'altro della pagina, causando duplicati o lacune. Si concluda l'ordinamento con una chiave univoca, ad esempio la chiave primaria, per rendere coerente la paginazione.
SELECT id, name, price
FROM products
ORDER BY price DESC, id
LIMIT 10 OFFSET 20;Una sola riga principale
LIMIT 1 è un modo rapido per recuperare una sola riga, ad esempio il prodotto più costoso o l'ordine più recente. Lo si abbini al corretto ORDER BY.
SELECT name, price
FROM products
ORDER BY price DESC
LIMIT 1;Verifica rapida
Si visualizzano 10 righe per pagina. Quale clausola restituisce la pagina 3?
Riepilogo
Ora è possibile suddividere i risultati:
LIMIT nlimita il numero di righeOFFSET msalta alcune righe;OFFSET = (page-1)*size- Si combini sempre con
ORDER BYper ottenere pagine prevedibili - Per una maggiore velocità, si preferisca la paginazione keyset agli offset elevati
Successivamente, si utilizzeranno questi strumenti per trovare i record Top-N.
SELECT name, price
FROM products
ORDER BY name
LIMIT 10 OFFSET 20;Domande Frequenti
La lezione «LIMIT e OFFSET» è gratuita?
Sì — il testo completo di «LIMIT e OFFSET» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.
Cosa imparerò in «LIMIT e OFFSET»?
Recuperi le prime N righe e implementi la paginazione Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare SQL Academy?
Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «LIMIT e OFFSET»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione SQL Academy?
Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.