db

La base de datos va lenta o da timeouts con usuarios reales

Tu app pide datos y la respuesta tarda tanto que algo se cansa de esperar. Lo característico de este problema es que no existía cuando probabas: aparece cuando hay filas de verdad y gente entrando a la vez.

Revisado en agosto de 2026

De paso

Ya de paso: ¿tu app está exponiendo datos?

Analízala gratis mientras lees. Tarda treinta segundos y no toca nada.

Solo leemos lo que tu app ya le entrega a cualquier visitante.

Diagnóstico

Por qué te pasa

La causa número uno son los índices. Con doscientas filas de prueba, buscar un dato es instantáneo aunque haya que recorrer la tabla entera. Con doscientas mil, esa misma consulta recorre doscientas mil filas cada vez que alguien abre la pantalla. Un índice le da a la base de datos un atajo, y sin él el crecimiento se paga entero en cada consulta.

La segunda es pedir muchas veces en vez de pedir bien. Es un patrón muy típico del código generado: se pide la lista de elementos, y luego, por cada elemento, se hace otra consulta para traer su autor o su categoría. Con diez elementos son once consultas y no se nota; con cien son ciento una y la pantalla se arrastra. Se arregla pidiendo los datos relacionados de una vez.

La tercera no es un problema de rendimiento sino de plan: los proyectos gratuitos de Supabase se pausan tras un tiempo sin actividad y tienen menos recursos. Ahí el primer acceso tras la pausa tarda muchísimo y luego va bien, que es un patrón muy reconocible.

Y un caso menos evidente: traer más datos de los que enseñas. Si la pantalla muestra veinte elementos pero la consulta trae los cinco mil que hay, el tiempo se va en transportar datos que nadie va a ver.

Lo que este error no significa

  • No significa que Supabase se te haya quedado pequeño ni que tengas que cambiar de tecnología. La inmensa mayoría de estos casos se arreglan con un índice o con una consulta mejor escrita, y aguantan mucho más crecimiento del que crees.
  • No significa que tengas que pagar un plan mayor todavía. Conviene descartar primero las causas de código: subir de plan un problema de índices solo lo hace un poco menos lento y bastante más caro.
  • No has perdido datos ni los has corrompido. Están todos ahí; el problema es cuánto se tarda en traerlos.

Solución

Arréglalo tú, gratis

Supabase te dice dónde está el problema si sabes dónde mirar, y ahorra mucho tiempo de suposiciones. Empieza por ahí antes de tocar nada.

  1. 01En Supabase, entra en Reports y luego en la sección de rendimiento de consultas. Ahí aparecen las más lentas y las más frecuentes, ordenadas. La que esté arriba es tu problema.
  2. 02Mira cuántas filas tiene la tabla implicada, en el editor de tablas. Si son decenas de miles y la consulta filtra por una columna concreta, el problema es casi seguro un índice que falta sobre esa columna.
  3. 03Comprueba si te pasa el patrón de las muchas consultas: abre la app con la pestaña Network del navegador y cuenta las peticiones al abrir una pantalla. Si ves decenas de llamadas casi idénticas, ahí está.
  4. 04Comprueba tu plan. Si es gratuito y notas que la primera visita del día tarda muchísimo y luego va fina, es la pausa por inactividad, no tu código.
  5. 05Con eso identificado, aplica el arreglo. Los índices se pueden crear desde el panel, en el editor de SQL, y son un cambio pequeño y reversible. Lo demás va en el prompt de abajo.

Un índice acelera las lecturas y ralentiza ligeramente las escrituras. En una app normal compensa con mucho, pero no crees índices a granel por si acaso: crea el que necesita la consulta que va lenta.

Y esto para la parte de código

Pégaselo tal cual al agente que escribió tu app. Está redactado para que te diga lo que ha hecho, no solo para que lo haga.

Prompt para tu agente

Mi app con Supabase va lenta ahora que hay datos y usuarios reales. La consulta más lenta según el panel es: [PEGA AQUÍ LA CONSULTA O DESCRIBE LA PANTALLA QUE VA LENTA].

Necesito que hagas esto:
1. Enséñame todas las consultas que se lanzan al abrir esa pantalla y dime cuántas son en total. Si hay una consulta dentro de un bucle, señálamela.
2. Reescribe esos casos para traer los datos relacionados en una sola consulta en vez de una por elemento.
3. Comprueba si las consultas están pidiendo todas las columnas cuando solo se usan unas pocas, y si traen todas las filas cuando la pantalla muestra un número limitado. Añade paginación donde falte.
4. Dime qué índices necesitaría la base de datos para estas consultas, en SQL, con una línea explicando qué acelera cada uno. No los apliques: los reviso yo.
5. Añade un estado de carga en esas pantallas para que mientras tanto el usuario vea algo en vez de una pantalla congelada.

Si no sale

¿Lo has intentado y sigue sin salir?

O el escáner de arriba ha encontrado algo y prefieres no tocarlo solo. En cualquiera de los dos casos esto ya es de los gordos y merece un humano: no es que no hayas sabido, es que has llegado al punto en que hace falta alguien que entre y lo vea por dentro.

Las 10 primeras apps son gratis. Estoy empezando y necesito casos reales. A cambio te pido permiso para contar después qué me encontré, sin decir de quién era la app ni enseñar tus datos. Sin tarjeta y sin suscripción: cuando se acaben las plazas empezaré a cobrar y lo diré aquí.

Cita a partir de mañana

Agendar revisión

Gratis

durante el lanzamiento

Elegimos hueco, miro tu app con calma y te digo qué pasa y cómo se arregla.

  • Sesión de trabajo en directo contigo
  • Diagnóstico del error y del riesgo real
  • Te quedas con el arreglo aplicado

Hoy, en cola prioritaria

Rescate exprés

Gratis

durante el lanzamiento

Entras en la cola de hoy. Reservas hueco y lo dejamos resuelto en el día.

  • Hueco el mismo día
  • Prioridad sobre las revisiones agendadas
  • Mismo trabajo, antes

Quién

Marc Sala

IT Manager

  • Analista de ciberseguridad certificado por Google

No es un rating anónimo de un marketplace: es la persona que va a entrar en tu app. Reviso el código, encuentro qué falla y lo arreglo contigo delante, explicándote qué ha pasado sin jerga.