0Pricing
SQL Academy · Aula

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 n limita o número de linhas
  • OFFSET m ignora linhas; OFFSET = (page-1)*size
  • Sempre combine com ORDER BY para 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.

Todas as aulas deste curso

  1. Ordenação com ORDER BY
  2. Ordenação por várias colunas
  3. LIMIT e OFFSET
  4. Encontrando os registros do Top-N
← Voltar para SQL Academy