Fixing Queries & Adding Indexes: From 400 Queries to 4 - Laravel In Practice EP6
Published on by Harris Raftopoulos
▶️ Watch the video tutorial (6 minutes)
Drastically Improving Your Laravel Dashboard Performance - Laravel In Practice EP6
Your dashboard is making over 400 queries, but the fix is simpler than you think. What if I told you that a few strategic changes could reduce those queries to just 4 and slash your response time from 180ms to 40ms?
In this episode of Laravel In Practice, I show you how to eliminate N+1 queries and add strategic database indexes without breaking your clean architecture. You'll learn to fix the top customers method that was generating hundreds of queries using loadMissing() and lookup tables, add composite indexes to frequently queried columns like status and user_id, and use EXPLAIN query plans to verify your optimizations are actually working.
The result? Your dashboard drops from over 400 queries to just 4. That sluggish 187ms load time becomes a snappy 53ms. You'll see exactly how indexes allow SQL to jump directly to relevant rows instead of scanning entire tables, and how to validate these improvements with test routes that measure real performance gains.
This continues our Performance Optimization journey, taking the N+1 problems we discovered with Telescope in Episode 5 and fixing them systematically. No complex rewrites needed - just smart use of loadMissing() to avoid redundant relationship loading and strategic indexes added through a simple migration.
Whether you're debugging a slow dashboard or preventing future bottlenecks, these techniques are essential. You'll understand how to create lookup tables that prevent iteration redundancy, when to use composite indexes for multi-column queries, and how to prove your optimizations work using Laravel's database explain features.
The query optimizations and indexing strategies we implement here achieve a 4.5x performance improvement - and we're just getting started. Next episode, we'll push even further by moving calculations to the database level.