Desarrollador de Bases de Datos y SQL: pregunta de entrevista

¿Cómo paginas resultados SQL grandes?

Prefiere paginación keyset para datos grandes y cambiantes: ordena por una tupla única estable y busca después de la última clave. OFFSET descarta prefijos crecientes y puede duplicar u omitir filas.

Respuesta directa

Qué debe cubrir una buena respuesta

Cómo funciona

La paginación con OFFSET pide al motor producir y descartar todas las filas anteriores a la página solicitada, así que la página 1.000 recorre un millón de filas, y si se insertan o borran filas entre solicitudes, los elementos se desplazan y aparecen dos veces o desaparecen. La paginación por keyset ordena por una tupla única y estable como (created_at, id), recuerda los últimos valores vistos y pide las filas posteriores, lo que usa una búsqueda por índice sin importar la profundidad y es estable ante cambios concurrentes. No puede saltar a un número de página arbitrario, algo que rara vez se necesita en feeds y APIs. Los cursores codifican la última tupla de forma opaca para que los clientes no dependan de su forma.

Ejemplo

Una API de feed de actividad devuelve 50 eventos ordenados por (created_at DESC, id DESC) y un cursor que codifica el último par; la siguiente solicitud ejecuta WHERE (created_at, id) < ($1, $2) ORDER BY created_at DESC, id DESC LIMIT 50 con un índice sobre esas columnas, tardando 2 ms sea la página 2 o la 20.000. La tabla de administración que necesita números de página mantiene OFFSET pero lo limita a 100 páginas y muestra un total calculado aparte.

Errores frecuentes

  • Paginar un feed cambiante con OFFSET y mostrar duplicados cuando llegan filas nuevas.
  • Ordenar por una columna no única, de modo que los empates hacen ambiguo el límite de página.
  • Exponer los valores brutos de la última fila como cursor y dejar que los clientes dependan de ellos.

Una estructura útil para responder

Responde desde tu propia experiencia.

No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.

Practica esta respuesta con MiraHint

Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.

Descargar MiraHint
Preguntas de entrevista para Desarrollador de Bases de Datos y SQL