Databases & System Design•Part 2: Relational Databases (RDBMS / PostgreSQL / MySQL) (6 - 25)
The N+1 Query Problem in ORMs:
In Simple Words:
Fetching 100 users, and then executing 100 individual queries inside a loop to fetch each user's profile ($1 + 100 = 101$ queries).
Fix: Use Eager Loading to fetch all profiles in a single query using IN (...).
sql
-- The BAD N+1 pattern:
-- Query 1: SELECT * FROM users LIMIT 100;
-- Followed by 100 queries: SELECT * FROM profiles WHERE user_id = ?;
-- The EAGER LOADING fix (2 queries total):
-- Query 1: SELECT * FROM users LIMIT 100;
-- Query 2: SELECT * FROM profiles WHERE user_id IN (1, 2, 3, ... 100);