【问题标题】:Rails sorting or ordering query is slowRails 排序或排序查询很慢
【发布时间】:2013-10-09 01:13:33
【问题描述】:

使用 Rails 3.2、Ruby 1.9、will_paginate。我有 100,000 条记录,并测试了以下查询:

# 1000+ms to load
@shops = Shop.where(:shop_type => @type).paginate(:include => :photos, :page => params[:page], :per_page => 25, :order => 'created_at DESC')

# 1000+ms to load
@shops = Shop.paginate(:include => :photos, :page => params[:page], :per_page => 25, :order => 'created_at DESC')

# 1000+ms to load
@shops = Shop.order('created_at DESC').limit(25)

# 1+ms to load
@shops = Shop.paginate(:include => :photos, :page => params[:page], :per_page => 25)

我注意到order 选项非常慢。测试结果表明will_paginate没有问题。

我应该如何更改它,以便可以加快使用order 的查询。

【问题讨论】:

  • 在订单列添加索引?
  • @apneadiving 想到了。任何可以排序/排序的东西都必须编入索引?
  • 只有当你想要它快的时候。相对而言,索引相当便宜。

标签: ruby-on-rails performance activerecord pagination


【解决方案1】:

是的,尝试在订单列上创建索引。它会加快速度。

【讨论】:

    猜你喜欢
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2021-12-28
    • 1970-01-01
    相关资源
    最近更新 更多