Repaso
English
Backend y APIsAvanzadoAPI-18

¿Por qué se prefiere la paginación por cursor (keyset) a OFFSET en conjuntos de datos grandes y cambiantes?

Opciones

  1. Permite saltar directamente a cualquier número de página
  2. OFFSET salta filas y se vuelve lento; un cursor usa un índice (Opción correcta)
  3. La paginación por cursor no necesita ningún índice en la tabla
  4. OFFSET no es SQL válido en la mayoría de las bases de datos

Respuesta

OFFSET se vuelve más lento al crecer y puede saltar o duplicar filas si los datos cambian; un cursor busca con un WHERE id > :last indexado

Por qué

OFFSET 100000 LIMIT 20 hace que la base de datos lea y descarte 100.000 filas, así que las páginas profundas son lentas. Si se insertan filas mientras el usuario pagina, algunos elementos pueden saltarse o aparecer dos veces.

La paginación por cursor recuerda el último elemento visto y pide WHERE id > 12345 ORDER BY id LIMIT 20, que usa un índice y siempre es rápido y estable.

Trade-off: no se puede 'saltar a la página 37'.

Recuerda

Listas grandes o vivas → paginación por cursor.

Términos clave

Practica esta pregunta en Repaso