【问题标题】:Rails complex SQL for objects belonging to a user's followers属于用户关注者的对象的 Rails 复杂 SQL
【发布时间】:2011-05-13 02:09:44
【问题描述】:

我正在尝试制定一个复杂的 SQL 查询(在 Rails 3 中)来访问属于用户关注者的照片对象。

场景是:

  • 用户 A 有 500 个关注者
  • 每个关注者有 500 张照片
  • 我想生成一个查询,根据照片的创建日期一次分页(使用 will_paginate)10 张照片并将它们返回给用户 A

所以这基本上就像将所有关注者的照片收集到一个集合中,根据照片创建日期对集合进行排序,然后对结果进行分页以一次仅返回 10 张照片。这可能意味着最近的 10 张照片来自多个关注者。

对此我有两个问题:

  1. 如何有效地制定这样一个复杂的查询? (我对 Rails 比较陌生,所以我不太了解自定义查询)。
  2. 有理由不这样做吗?例如,如果用户有 1,000 个关注者,每个关注者有 10,000 张照片,这样做会不会存在延迟问题?

User.rb 文件中的关系建模为:

has_many :following, :through => :relationships, :source => :followed
has_many :followers, :through => :reverse_relationships, :source => :follower

has_many :photos,   :dependent => :destroy, :order => 'created_at DESC'

关注者/关注者只是另一个用户。

感谢您提供的任何指导!非常感谢!!! :)

【问题讨论】:

    标签: sql ruby-on-rails ruby-on-rails-3 performance


    【解决方案1】:

    我怀疑会有延迟问题,因为 will_paginate 对查询设置了限制,在您的情况下是 10。但是,您需要确保数据库上存在索引。

    我认为这样的事情应该可行:

    has_many :follower_photos, :class_name => 'Photo', :through => :followers
    

    这就是你要找的吗?

    【讨论】:

    • 不幸的是,这对我不起作用,因为它一直在询问来源
    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    相关资源
    最近更新 更多