【问题标题】:Rails limit query after order and improve performanceRails 限制下单后查询,提升性能
【发布时间】:2014-03-03 04:21:22
【问题描述】:

抱歉标题含糊

我有一个查询,我在其中获取了具有最高 rating_number 的 5 个用户的列表,这是用户表中的一个索引列。

当我根据他们的rating_number 获得这些用户的列表然后调用.limit(5) 方法时,它只需要 5 个用户,然后在这五个用户上将它们按 rating_number 的顺序排列,即使这些用户不是t 具有最高 rating_number 的那些。

这是当前范围,但我知道我可以提高此查询的性能,所以如果您知道,请告诉我如何做,因为我在一页上有几个这样的查询,而且性能很差。

在我的用户模型中

scope :top_five_users, -> do
  results = User.all
  results.order('rating_number DESC')
  results.limit(5)
end

谢谢!

【问题讨论】:

    标签: sql ruby-on-rails performance ruby-on-rails-4


    【解决方案1】:

    你不需要使用.all

    User.order('rating_number DESC') 
    

    以上足以获得评分最高的用户

    并限制 5 个用户

    scope :top_five_users, -> do
      User.order('rating_number DESC').limit(5)
    end
    

    【讨论】:

    • 是的,这更有意义,我应该知道哈。还有其他方法可以提高这里的性能吗?我知道使用 rating_number 作为 counter_cached 列有帮助(我从另一个模型中获取计数),但仍然希望进一步改进。
    猜你喜欢
    • 2020-06-04
    • 2021-08-14
    • 2014-04-02
    • 1970-01-01
    • 2016-03-24
    • 2016-03-23
    • 1970-01-01
    • 2015-10-17
    相关资源
    最近更新 更多