4

什么是让活动记录在开发环境中的所有查询中使用 SQL_NO_CACHE 的简单方法?

我想针对最坏情况的加载时间优化语句。希望这样做是有意义的,但是我在第一页命中时得到非常慢的查询,下一次所有查询都非常快,因为服务器应该缓存它们。

我正在使用带有 rails 3.2.3 的 mysql2 gem 0.3.11。

4

2 回答 2

2

因为我不想编辑数百个查询,所以我在应用程序控制器中放置了一个前置过滤器,如下所示:

def disable_sql_query_cache_in_development
  if Rails.env == "development"
    Rails.logger.warn Utils.yellow "ApplicationController.disable_sql_query_cache_in_development", "Query cache will be reset for worst case performance tuning"
    #ActiveRecord::Base.connection.execute("SET SESSION query_cache_type = OFF")
    ActiveRecord::Base.connection.execute("RESET QUERY CACHE")
  end
end
于 2013-02-15T20:19:41.813 回答
1

使用常规的 rails find 你可以把它塞进去:

2.3.5:

User.find(:all, :select => "SQL_NO_CACHE *", :conditions=>"id = 1234")

3+

User.where(:id => 10).select("SQL_NO_CACHE *")
于 2012-12-06T19:54:43.220 回答