2013-10-02 3 views
2

Использование Rails 3.2, Ruby 1.9, will_paginate. У меня есть 100000 записей, и протестировали следующие запросы:Запрос на сортировку или заказы Rails медленный

# 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 можно было ускорить.

+1

Добавить индекс в колонке заказов? – apneadiving

+0

@apneadiving Мысль об этом. Все, что может быть отсортировано/упорядочено, должно быть проиндексировано? – Victor

+1

Только если вы хотите быстро. Индексы довольно дешево сравнительно. – railsdog

ответ

3

Да, попробуйте создать индекс в столбце заказа. Это ускорит его.

Смежные вопросы