【发布时间】:2013-09-05 05:05:00
【问题描述】:
我正在使用 Ruby on Rails 3.1.10 开发 Web 应用程序。
目标是找到用户关注的所有用户。
假设有两个模型User和Following
在User 模型中:
has_many :following_users, :through => :followings
当调用user.following_users 时,rails help 会生成一个查询,即INNER JOIN between users and followings table 默认情况下。
当users 表有超过50,000 条记录,而followings 表有超过10,000,000 条记录时,生成的内连接需要资源。
关于如何通过避免内部连接两个大表来优化性能的任何想法?
【问题讨论】:
-
联接表是关联在 Rails 中的工作方式。你不会避免这样做(我想没有切换到 noSQL 数据库)。您的
followings表是否由user_id(或此查询中使用的任何外键)索引?正确的索引可以大大缩短查询时间。
标签: sql ruby-on-rails-3