Paginação por cursor vs. offset: quando a lista começa a ficar lenta
A página 1 da lista carrega rápido, a página 500 demora segundos e às vezes repete itens. Entenda a diferença entre paginação por offset e por cursor.
Por Equipe We Codex3 min de leitura
A forma mais comum de paginar é por offset: "pule 40 itens e traga 20". É simples e permite ir direto para a página 7. Mas, conforme a tabela cresce, ela cobra seu preço.
O problema do offset
- Lentidão nas páginas finais: para "pular 100 mil itens", o banco precisa percorrê-los. A página 5.000 pode levar segundos.
- Itens duplicados ou perdidos: se um item novo entra enquanto o usuário navega, tudo se desloca e ele vê o mesmo item duas vezes — ou nunca vê outro.
Paginação por cursor
Em vez de "pule N", você diz "traga 20 depois deste item":
SELECT * FROM pedidos
WHERE criado_em < $1
ORDER BY criado_em DESC
LIMIT 20O cursor é o valor do último item recebido. Com um índice na coluna de ordenação (Índices no banco de dados: a otimização mais barata que você ainda não fez), a consulta é igualmente rápida na primeira e na milésima página, e não duplica itens.
Quando usar cada um
- Offset: listas pequenas, painéis administrativos e quando o usuário precisa saltar para uma página específica.
- Cursor: feeds, rolagem infinita, apps e APIs públicas com muito volume.
Detalhes que fazem diferença
- Ordene por uma coluna única (ou combine com o id) para evitar empates.
- Devolva o próximo cursor na resposta, pronto para o cliente usar.
- Limite o tamanho máximo da página.
Paginação é uma das convenções básicas de API REST bem desenhada: nomes, status codes e paginação que não confundem ninguém, e listas infinitas no app dependem dela (Listas lentas no React Native: FlatList, FlashList e memorização na prática).
A We Codex constrói APIs que aguentam crescimento em sistemas web. Fale com a gente.
- Paginação
- APIs
- Banco de dados
- Performance
Resolver de vez, com quem faz isso todo dia
Precisa de uma API ou integração que não caia quando o negócio crescer?
Este artigo mostra o caminho. A implementação sob medida — o detalhe que muda o resultado no seu caso — é o trabalho da We Codex, empresa de engenharia do grupo Wocom.
Continue lendo
Tudo sobre Backend & APIs- Ler artigo
Backend & APIs3 min
Índices no banco de dados: a otimização mais barata que você ainda não fez
Uma consulta que leva 3 segundos pode levar 3 milissegundos com o índice certo. Veja como saber onde faltam índices — e por que índice demais também atrapalha.
- Ler artigo
Backend & APIs3 min
API REST bem desenhada: nomes, status codes e paginação que não confundem ninguém
Rotas como /getUsuarios2, erro 200 com "success: false" e listas sem paginação. Veja as convenções que tornam uma API REST fácil de usar e de manter.
- Ler artigo
Backend & APIs3 min
Consultas N+1: o vilão silencioso da API lenta
A tela de pedidos faz uma consulta para a lista e mais uma para cada pedido. Com 200 itens, são 201 idas ao banco. Veja como identificar e eliminar o problema N+1.