#backend
#bases-de-datos
#performance

Hoy vamos a aprender paginación (y no traer un millón de registros)

2 min read

Hoy vamos a aprender paginación (y no traer un millón de registros)

Hoy vamos a aprender paginación. Porque yo solo quería mostrar una lista… y terminé trayendo toda la base de datos.

La expectativa

Es fácil. Solo hago un SELECT *… lo mando al frontend… y que React se encargue.

Mi compu puede.

La realidad

La app no carga. El navegador se congeló. El backend llora. El frontend también. Y la base de datos pidió vacaciones.

¿Por qué hay un millón de registros en memoria? Ah… porque yo los pedí.

El primer intento: LIMIT y OFFSET

Ok, vamos a paginar. LIMIT. OFFSET. Funciona… hasta que llegas a la página 300.

Y ahora es lento. Muy lento.

El problema con OFFSET es que la base de datos tiene que recorrer todos los registros anteriores antes de devolverte los que necesitas. En tablas grandes, eso es costoso.

La solución: paginación correcta

La paginación no es opcional. Es pedir solo lo que necesitas, un pedacito a la vez.

Las dos estrategias principales:

Paginación por offset (simple, funciona para tablas pequeñas):

[sql]SELECT * FROM posts
ORDER BY created_at DESC
LIMIT 10 OFFSET 20;

Cursor-based pagination (para tablas grandes, mucho más eficiente):

[sql]SELECT * FROM posts
WHERE created_at < '2026-03-01'
ORDER BY created_at DESC
LIMIT 10;

Con cursor-based, la base de datos no necesita recorrer registros anteriores — va directo al punto de corte.

La lección

La base de datos no es un buffet libre. Si traes un millón de registros, no eres rápido. Eres valiente. Y un poco irresponsable.

Pagina desde el primer día. Tu base de datos, tu backend y tus usuarios te lo agradecerán cuando la app escale.

Ahora que lo sabes, puedes ser Cada Día Más Fullstack.

[ TAGS ]

#backend
#bases-de-datos
#performance

> Related Posts

View all →