aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation/query_methods.rb
diff options
context:
space:
mode:
authorEugene Kenny <elkenny@gmail.com>2017-04-24 21:10:47 +0100
committerEugene Kenny <elkenny@gmail.com>2017-07-06 14:21:07 +0100
commit6658e3746b236f84e27e711fced6a83b187ad2b1 (patch)
tree7b6fb771bdb70425016a6a8f59883d0ea8a773ba /activerecord/lib/active_record/relation/query_methods.rb
parentc8ce3459648ce0f86646b564ce1c0bb16a4b48eb (diff)
downloadrails-6658e3746b236f84e27e711fced6a83b187ad2b1.tar.gz
rails-6658e3746b236f84e27e711fced6a83b187ad2b1.tar.bz2
rails-6658e3746b236f84e27e711fced6a83b187ad2b1.zip
Skip query cache for in_batches and friends
The `find_each`, `find_in_batches` and `in_batches` APIs usually operate on large numbers of records, where it's preferable not to load them all into memory at once. If the query cache is enabled, it will hold onto the query results until the end of the execution context (request/job), which means the memory used is still proportional to the total number of records. These queries are typically not repeated, so the query cache isn't desirable here.
Diffstat (limited to 'activerecord/lib/active_record/relation/query_methods.rb')
-rw-r--r--activerecord/lib/active_record/relation/query_methods.rb5
1 files changed, 5 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb
index 9da8f96337..79495ead91 100644
--- a/activerecord/lib/active_record/relation/query_methods.rb
+++ b/activerecord/lib/active_record/relation/query_methods.rb
@@ -913,6 +913,11 @@ module ActiveRecord
self
end
+ def skip_query_cache! # :nodoc:
+ self.skip_query_cache_value = true
+ self
+ end
+
# Returns the Arel object associated with the relation.
def arel # :nodoc:
@arel ||= build_arel