Performance Eloquent : vos astuces pour éviter le N+1 en prod ?
Publié : mar. mars 10, 2026 7:17 pm
Salut la team !
Je me retrouve avec un petit souci de perf sur un projet Laravel en prod qui commence à avoir du volume (plus de 100k users actifs). Le classique problème de requêtes N+1 qui me bouffe mes performances comme un goinfre ?
Contexte rapide : j'ai une app e-commerce avec des relations User -> Orders -> OrderItems -> Products. Quand je charge la liste des commandes avec leurs détails, ça part en vrille niveau requêtes SQL.
J'ai déjà implémenté quelques trucs :
Je me retrouve avec un petit souci de perf sur un projet Laravel en prod qui commence à avoir du volume (plus de 100k users actifs). Le classique problème de requêtes N+1 qui me bouffe mes performances comme un goinfre ?
Contexte rapide : j'ai une app e-commerce avec des relations User -> Orders -> OrderItems -> Products. Quand je charge la liste des commandes avec leurs détails, ça part en vrille niveau requêtes SQL.
J'ai déjà implémenté quelques trucs :
- Eager loading avec with() sur les relations principales
- Cache Redis pour les données produits les plus consultées
- Pagination pour limiter les résultats
Mais j'ai encore des pics à 200+ requêtes sur certaines pages admin. Les lazy loading par défaut d'Eloquent, c'est pratique en dev mais en prod ça pique...
Du coup je me demandais :- Vous utilisez quoi comme tools pour tracker ces problèmes ? (Telescope c'est cool mais ça reste basique)
- Des retours d'expérience sur withCount() vs des requêtes SQL custom ?
- Vous passez par des Repository patterns ou vous restez sur les Models Eloquent ?
J'hésite aussi à migrer certaines parties critiques vers du Query Builder pur, mais j'aimerais garder la lisibilité d'Eloquent si possible.
Des suggestions d'approches qui ont fait leurs preuves chez vous ? Surtout côté monitoring en continu, parce que repérer ces trucs après coup c'est toujours galère.
Merci d'avance pour vos retours ! ?
- Vous utilisez quoi comme tools pour tracker ces problèmes ? (Telescope c'est cool mais ça reste basique)