Lección 7 de 12 · Lectura y práctica
N+1, DataLoader y performance
Respuesta rapida: El problema N+1 aparece cuando una query pide una lista y cada item dispara otra consulta individual. En GraphQL es comun porque los campos se resuelven de manera independiente. Que vas a aprender El problema.
Del concepto a la práctica
Taller de esta lección
N+1 aparece cuando una lista inicial provoca una lectura adicional por cada elemento. El diagnóstico se puede comprobar contando llamadas, no suponiendo que una query GraphQL equivale a una consulta de base de datos.
Ejemplo resuelto
Hay 3 cursos: c1→a1, c2→a2, c3→a1. Sin agrupación: 1 lectura de cursos + 3 de autores = 4. Un cargador reúne [a1,a2,a1], deduplica y resuelve [a1,a2]: 1 + 1 = 2 lecturas, si el repositorio acepta lote.
Para cuatro cursos (c1,a1),(c2,a2),(c3,a1),(c4,a2), la forma ingenua hace 5 lecturas. Un solo lote de autores hace 2 en total. Si solo memorizas autores pero los consultas por separado, son 3; no confundas deduplicación con batching. La función de lote debe devolver tantos resultados como claves, en el mismo orden: si faltase a2, devuelve null en su posición. Con la cache normal de DataLoader, duplicados pueden no llegar al callback, pero sus llamadas deben recibir la respuesta correcta.
Pruébalo
Anota los tres pares curso-autor.
Cuenta lecturas sin agrupación.
Cuenta claves únicas del lote.
Define un límite de cursos por página.
Error frecuente: crear un cargador global para todos los usuarios. Corrige creando el cargador por petición para aislar su cache.
Comprueba tu resultado
Repite el cálculo con cuatro cursos y dos autores, entregando todos los pares. El resultado debe mostrar la fórmula 1 + elementos sin agrupar frente a 1 + número de lotes al usar lecturas agrupadas y conservar la correspondencia de cada curso.

Mapa de prácticaEl navegador envía una solicitud a la API. El servidor valida la operación y consulta los datos; después devuelve una respuesta que el navegador puede mostrar. La base de datos se comunica con el servidor y no directamente con el navegador.
Ver la infografía en tamaño completo ↗Fuentes para profundizar
Que vas a aprender
El problema N+1 aparece cuando una query pide una lista y cada item dispara otra consulta individual. En GraphQL es comun porque los campos se resuelven de manera independiente.
Paso 1: practica profesional
DataLoader agrupa y cachea lecturas dentro de un request. En vez de buscar autor por cada curso, junta todos los IDs y hace una consulta por lote.
Paso 2: practica profesional
Tambien conviene limitar profundidad, cantidad de resultados y operaciones costosas. GraphQL da flexibilidad, pero produccion necesita limites claros para evitar abuso accidental o malicioso.
Paso 3: practica profesional
Para demostrar performance, compara una query sin DataLoader contra una version optimizada y documenta cuantas consultas SQL o llamadas externas se ejecutan en cada caso.
Ejercicio practico para portfolio
Elegi una API de cursos, empleos o productos digitales y documenta como resolverias este problema con GraphQL y Apollo. Inclui el schema, una query, una mutation, manejo de errores y una nota sobre cache o permisos. El objetivo no es memorizar sintaxis: es demostrar criterio tecnico para una entrevista junior, freelance o equipo de producto.
- Entregable: captura del resultado, archivo con codigo y README breve.
- Checklist: nombres claros, datos tipados, errores explicitos y flujo reproducible.
- Conexion laboral: agregalo a tu portfolio y enlazalo desde LinkedIn o desde una propuesta del marketplace.
Cuando termines, continua con rutas de carreras, oportunidades de empleo digital y servicios publicados en el marketplace de Cursalo.
Sigue con GraphQL con Apollo para APIs modernas
Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.
Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.