2011-02-23 123 views
1

只是更新我的代碼以準備Rails 3,但是我遇到了下面的代碼的一個主要性能問題。爲什麼這個代碼更慢?

舊代碼(好的和快)

@products = Product.all(
         :order => 'name', 
         :include => [:category, :brand, :merchant] 
         ).paginate(:page => params[:page]) 

新代碼(10×較慢)

@products = Product.order("name") 
        .includes([:category, :brand, :merchant]) 
        .paginate(:page => params[:page]) 

我加入了換行符,方便閱讀。

我爲我的DB使用Postgres,也許這是問題?

任何其他技巧,使這個代碼更好將非常感謝!

+0

您是否在生產模式下試過了? – Zepplock 2011-02-23 21:11:03

+0

沒有發展 - 我在語法上犯了什麼錯誤嗎? – Zinc 2011-02-23 21:11:36

+0

開發模式不一定針對速度進行優化。這很可能是一些調試掛鉤或便利功能。如果沒有明顯的緩慢原因,我至少會在開發之外嘗試。 – Chuck 2011-02-23 21:25:16

回答

1

我會檢查輸出的SQL(來自日誌或控制檯),看看有什麼改變和/或如何優化查詢。

+0

控制檯看起來不錯,SQL看起來不錯。這是我檢查的第一件事 – Zinc 2011-02-23 21:14:30

+1

究竟是什麼慢了10倍呢? – 2011-02-23 21:18:20

+0

從15ms(舊代碼)到200ms(新代碼) – Zinc 2011-02-23 21:23:54

0

它可能是分頁問題嗎?你使用哪個插件進行分頁?你可能想嘗試Kaminari。