---
title: Avoid N+1 queries with eager loading
impact: HIGH
impactDescription: Prevent performance issues caused by N+1 query problems.
tags: rails, performance, database, n+1, active-record
---

## Avoid N+1 queries with eager loading

Prevent performance issues caused by N+1 query problems. Use `includes`, `preload`, or `eager_load` to load associations upfront. Avoid iterating over collections and accessing associations without eager loading.

**Incorrect:**

```ruby
# Triggers N+1 queries (one query for users, and one query per user for posts)
users = User.limit(10)
users.each do |user|
  puts user.posts.count
end
```

**Correct:**

```ruby
# Eager loads posts in 2 queries total
users = User.includes(:posts).limit(10)
users.each do |user|
  puts user.posts.count
end
```

**Tools:** Bullet gem, RuboCop Rails (`Rails/FindEach`)
