新手问题 Rails 性能查询优化

return · 2017年12月20日 · 最后由 return 回复于 2017年12月20日 · 1442 次阅读

麻烦各位百忙之中抽出一点时间帮我看看这个问题,谢谢! 问题是这样: 有三张表 projects、sub_projects、products。projects 表与子项目表(sub_project)是一对多的关系;projects 表与产品表(products)是一对多的关系;

projects 表,字段 sub_project_id, products_id
sub_projects、products 外键project_id
现在需要做的是查询10条projects ,每条记录中需要包含该条记录的sub_projects总数,products总数

想用一条语句完成 我使用下面的语句:

select projects.* , (select count(*) form sub_projects where projects.id=sub_projects.project_id)  as sub_project_count , 
(select count(*) form products where projects.id=products.project_id) as product_count 
from projects  order by  product_count, sub_project_count

上面的语句虽然可以实现,但是性能太差? 有没有更高效的查询?

如果哪位大神能够用 ruby 帮我写出来,那就太好了,非常感谢!

推荐从以下方案优化

class SubProject < ApplicationRecord
  belongs_to : project, counter_cache: true
end
breeze 回复

恩恩,学习了,非常感谢

return 关闭了讨论。 08月20日 14:08
需要 登录 后方可回复, 如果你还没有账号请 注册新账号