LIMIT e OFFSET
Busque as primeiras N linhas e faça a paginação.
LIMIT e OFFSET é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.
Buscando apenas algumas linhas
Às vezes, não deseja todas as linhas correspondentes, apenas as primeiras. LIMIT limita o número de linhas retornadas pela consulta.
Isso retorna no máximo 5 produtos.
SELECT name, price
FROM products
LIMIT 5;LIMIT sem ORDER BY é aleatório
LIMIT sozinho fornece algumas linhas, mas não é definido quais linhas serão retornadas. Sempre combine-o com ORDER BY para que o resultado seja significativo e repetível.
-- The 5 newest orders, deterministically
SELECT id, total, created_at
FROM orders
ORDER BY created_at DESC
LIMIT 5;Ignorando linhas com OFFSET
OFFSET informa ao banco de dados quantas linhas deve ignorar antes de retornar o resultado. Combinado com LIMIT, ele é a base da paginação.
Isso ignora as 10 primeiras linhas e retorna as 5 seguintes.
SELECT name, price
FROM products
ORDER BY name
LIMIT 5 OFFSET 10;Criando páginas
Para um tamanho de página 10, os números das páginas correspondem a deslocamentos desta forma:
- Página 1:
OFFSET 0 - Página 2:
OFFSET 10 - Página 3:
OFFSET 20
A fórmula é OFFSET = (page - 1) * page_size.
-- Page 3 with 10 rows per page
SELECT name, price
FROM products
ORDER BY name
LIMIT 10 OFFSET 20;Ordem das operações
O banco de dados aplica as cláusulas nesta ordem: filtra com WHERE, ordena com ORDER BY e depois reduz com OFFSET e LIMIT.
Assim, a paginação sempre percorre o resultado ordenado e filtrado.
SELECT name, price
FROM products
WHERE price > 0
ORDER BY price DESC
LIMIT 10 OFFSET 0;LIMIT ALL e OFFSET 0
LIMIT ALL significa "sem limite" (o mesmo que omitir LIMIT), e OFFSET 0 não ignora nada. Eles são ocasionalmente úteis quando um valor é criado dinamicamente.
SELECT name
FROM products
ORDER BY name
LIMIT ALL OFFSET 0;A sintaxe padrão de FETCH
O PostgreSQL também oferece a forma padrão do SQL: OFFSET n ROWS FETCH NEXT m ROWS ONLY. Ela faz exatamente o que LIMIT/OFFSET fazem, apenas de forma mais verbosa.
SELECT name, price
FROM products
ORDER BY name
OFFSET 10 ROWS
FETCH NEXT 5 ROWS ONLY;Por que valores altos de OFFSET são lentos
Um OFFSET grande ainda faz o banco de dados examinar e descartar todas as linhas ignoradas. OFFSET 100000 lê 100.000 linhas apenas para descartá-las, o que fica lento em páginas muito avançadas.
-- Reads 100000 rows then discards them
SELECT id, name
FROM products
ORDER BY id
LIMIT 10 OFFSET 100000;Paginação por chave
Uma alternativa mais rápida é a paginação por chave (busca). Em vez de usar um deslocamento, memorize a última linha que você viu e solicite as linhas depois dela.
Isso vai diretamente para a próxima página usando um índice, sem ignorar linhas.
-- Next page after the last seen id (e.g. 5000)
SELECT id, name
FROM products
WHERE id > 5000
ORDER BY id
LIMIT 10;Páginas estáveis precisam de uma ordenação estável
Se o seu ORDER BY tiver empates, as linhas poderão mudar de posição entre os carregamentos das páginas, e você poderá ver duplicatas ou lacunas. Finalize a ordenação com uma chave única, como a chave primária, para que a paginação seja consistente.
SELECT id, name, price
FROM products
ORDER BY price DESC, id
LIMIT 10 OFFSET 20;Uma única linha do topo
LIMIT 1 é uma forma rápida de obter uma única linha, como o produto mais caro ou o pedido mais recente. Combine-o com o ORDER BY adequado.
SELECT name, price
FROM products
ORDER BY price DESC
LIMIT 1;Verificação rápida
Você exibe 10 linhas por página. Qual cláusula retorna a página 3?
Recapitulação
Agora você pode dividir seus resultados:
LIMIT nlimita o número de linhasOFFSET mignora linhas;OFFSET = (page-1)*size- Sempre combine com
ORDER BYpara obter páginas previsíveis - Prefira a paginação por chave a deslocamentos grandes para obter mais velocidade
Em seguida, você usará essas ferramentas para encontrar registros entre os N primeiros.
SELECT name, price
FROM products
ORDER BY name
LIMIT 10 OFFSET 20;Perguntas Frequentes
A aula “LIMIT e OFFSET” é grátis?
Sim — o texto completo de “LIMIT e OFFSET” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.
O que vou aprender em “LIMIT e OFFSET”?
Busque as primeiras N linhas e faça a paginação. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar SQL Academy?
Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “LIMIT e OFFSET”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de SQL Academy?
Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.