devterview_$ iniciar simulação

Paginação offset x cursor

DifícilSêniorModelagem

Pergunta

Quais as diferenças entre paginação por offset (`?page=3&size=20`) e por cursor (`?after=<token>`), e quando cada uma é a escolha certa?

Resposta esperada

Offset: pula N linhas e pega as próximas M. Simples, permite 'ir pra página 47' e mostrar total de páginas. Problemas: fica lento em offsets grandes (o banco ainda varre as linhas puladas) e é instável se dados são inseridos/removidos entre requisições — itens repetem ou somem ('page drift'). Cursor (keyset): o token codifica a posição da última linha vista (ex: `created_at,id`), e a próxima página é `WHERE (created_at, id) < (...)`. Rápido em qualquer profundidade (usa índice) e estável sob escrita concorrente. Custo: não dá pra saltar pra uma página arbitrária nem mostrar 'página X de Y' facilmente. Regra: feeds e listas grandes/infinite-scroll → cursor; tabelas administrativas pequenas onde 'ir pra página N' importa → offset é aceitável.

Por que perguntam isso

Pergunta pleno/sênior. Termos que indicam experiência: 'keyset pagination', 'page drift', e o trade-off de não poder saltar de página com cursor.

#paginacao#cursor#offset#performance
publicidade

Relacionadas