Volver a las preguntas frecuentes sobre Bases de datos
CENTRO DE AYUDA · FAQBases de datos2 min de lectura

¿Cómo reduzco las consultas N+1 en una aplicación?

El patrón N+1 aparece cuando el código carga una lista y después ejecuta otra consulta por cada elemento, haciendo que el número de consultas crezca con los resultados. Puede aumentar la latencia aunque cada consulta sea rápida; identifica el acceso repetido y carga los datos relacionados con un número acotado de consultas.

Bases de datos

Encuentra la consulta repetida

Usa registros de consultas, trazas o métricas de la base para localizar solicitudes que ejecutan muchas sentencias similares. Compara las consultas con los registros devueltos e identifica qué relación o campo activa la búsqueda repetida.

Un conjunto pequeño de desarrollo puede ocultar el problema. Reprodúcelo con tamaños realistas y revisa si la serialización, las plantillas o funciones auxiliares acceden a relaciones implícitamente.

Carga los datos relacionados de forma deliberada

Según el modelo y la base, utiliza una unión, una búsqueda por lotes con las claves necesarias o la carga anticipada del ORM. Evita tanto las consultas por fila como un resultado enorme con datos duplicados.

Mide consultas totales, filas devueltas, tamaño de respuesta y latencia antes y después. Añade una comprobación con listas representativas y conserva la paginación y los filtros de autorización al cambiar la carga.

Volver a las preguntas frecuentes sobre Bases de datos