限制包括Rails中的性能问题

时间:2013-12-21 18:13:00

标签: mysql ruby-on-rails performance associations mariadb

使用Rails 3.2。我正在重新审视problem I had earlier,这会影响性能,同时让附近的商店获取大量数据。

以下是原始代码:

# statement A
nearby_shops = current_shop.nearbys(10, :order => 'overall_rating DESC')
.where(:shop_type => shop_type).includes(:photos).limit(5)

我认为将其限制为5条记录需要加载 4000 + ms (数据库中有300,000条记录),但删除限制只需 20ms ,所以我的新代码是:

# statement B
nearby_shops = (current_shop.nearbys(10, :order => 'overall_rating DESC')
.where(:shop_type => shop_type).includes(:photos))[0..4]

语句B检查所有记录,但使用[0..4]时,它仅返回5条记录。我选择不使用.limit(5).first(5),因为这两个函数仍将返回到语句A中生成的相同SQL。

陈述A返回5条记录和5张相关照片,花在照片上的时间为10毫秒;

对帐单B返回100条记录和100张相关照片,花在照片上的时间为100毫秒。

如何将includes张照片限制在前五张[0..4],以免不必要地包含其他95张照片?

0 个答案:

没有答案