A common cause of n+1 queries is fetching the “latest-N-of-each” record on a list of records.
Some examples of this problem are trying to get…
I have one post named 5 ways to fetch the latest-N-of-each record on Rails where I share different ways to solve this problem. Here I want to share with you the code that I used in the post.
You can use it to run the examples, and play with the code and seed values, to pick the right solution for you current case.
1 - Install the dependencies with bundle install
.
2 - Database setup - run the command:
ruby db/setup.rb
3 - Run the examples with ruby fixes_examples/<file name>
. For example:
ruby fixes_examples/01_fetch_all_and_select_for_each.rb
4 - Change the posts and comments count on db/seeds.rb
you can change
Seeds.run(posts_count: 10, comments_count: 10)
and re-run ruby
db/setup.rb
to test different scenarios.
Subscribe, and get the code to run each of the examples in the post. You will receive a zip with the code.
Learn just enough fundamentals to be fluent preloading associations with ActiveRecord, and start helping your team to avoid n+1 queries on production.