Blog

Hola, soy Christopher.

Escribo sobre desarrollo de software, backend y las cosas que aprendo en el camino.

Cómo optimizar tus consultas en Eloquent (y evitar N+1)

Publicado el 10/09/2025 · 1 min de lectura · 144 vistas

Cómo optimizar tus consultas en Eloquent (y evitar N+1)

Tags:

Laravel Performance Eloquent

# Cómo optimizar tus consultas en Eloquent (y evitar N+1)

El problema N+1 ocurre cuando por cada registro principal realizas una consulta adicional a la base de datos. En este artículo veremos 3 técnicas prácticas para evitarlo y mejorar el rendimiento de tus endpoints.

1. Usar `with()` para eager loading


En lugar de:

<?php
$posts = Post::all();
foreach ($posts as $post) {
    echo $post->author->name; // consulta por cada post => N+1
}

Haz

$posts = Post::with('author')->get(); // 1 consulta para posts + 1 para authors

2. Seleccionar solo las columnas necesarias

Si no necesitas todos los campos, selecciona solo las columnas que usarás:

$users = User::select('id', 'name', 'email')->with('profile:id,user_id,bio')->get();
 Nota: cuando haces with('profile') y escoges columnas, incluye la FK (user_id o profile.user_id) entre las columnas. 

3. Paginación y caching

Para endpoints públicos usa paginación:

$posts = Post::with('author')->paginate(15);