Cómo optimizar tus consultas en Eloquent (y evitar N+1)
Publicado el 10/09/2025 · 1 min de lectura · 144 vistas
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 authors2. 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);