2

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

4

1 に答える 1

5

はい、注文列にインデックスを作成してみてください。それはそれをスピードアップします。

于 2013-10-02T15:24:28.357 に答える