¿Por qué se prefiere la paginación por cursor (keyset) a OFFSET en conjuntos de datos grandes y cambiantes?
Opciones
- Permite saltar directamente a cualquier número de página
- OFFSET salta filas y se vuelve lento; un cursor usa un índice (Opción correcta)
- La paginación por cursor no necesita ningún índice en la tabla
- 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.