我尝试使用名为“bullet”的 gem 以避免 N + 1 问题。
我以前的代码是
@communities = Community.scoped.page(params[:page]).order("created_at DESC")
然后我收到了这个错误
N+1 Query detected
Community => [:platform]
Add to your finder: :include => [:platform]
N+1 Query detected
Community => [:genre]
Add to your finder: :include => [:genre]
N+1 Query detected
Community => [:tags]
Add to your finder: :include => [:tags]
然后显示一个超过 80 条 sql 的页面大约需要 650 毫秒。
所以我把它改成了这个
@communities = Community.scoped.page(params[:page]).order("created_at DESC").includes(:platform, :genre, :tags)
现在,子弹的警报消失了,但它需要 750 毫秒,仍然有 80 多条 sql。
这是为什么?