Rule
Placing expensive operations like SQL queries or system calls inside loops leads to significant performance issues due to repeated and unnecessary executions. This can cause:
-
Excessive load on the database or external systems
-
Increased latency and slower performance
-
Hard-to-detect scalability bottlenecks
Examples
❌ Bad Practice:
foreach ($users as $user) {
$orders = $db->query("SELECT * FROM orders WHERE user_id = {$user->id}"); // BAD
process($orders);
}
✅ Good Practice:
$userIds = array_map(fn($u) => $u->id, $users);
$allOrders = $db->query("SELECT * FROM orders WHERE user_id IN (" . implode(',', $userIds) . ")");
foreach ($users as $user) {
$orders = filterOrdersForUser($allOrders, $user->id);
process($orders);
}