Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rails针对属于用户的对象的复杂SQL';追随者_Sql_Ruby On Rails_Ruby On Rails 3_Performance - Fatal编程技术网

Rails针对属于用户的对象的复杂SQL';追随者

Rails针对属于用户的对象的复杂SQL';追随者,sql,ruby-on-rails,ruby-on-rails-3,performance,Sql,Ruby On Rails,Ruby On Rails 3,Performance,我正在尝试制定一个复杂的SQL查询(在Rails 3中),用于访问属于用户追随者的照片对象 情况将是: 用户A有500个追随者 每个追随者有500张照片 我想生成一个查询,根据照片的创建日期一次分页(使用will_paginate)10张照片,并将其返回给用户a 因此,这基本上类似于将追随者的所有照片收集到一个集合中,根据照片创建日期对集合进行排序,然后对结果分页,一次只返回10张照片。这可能意味着最近的10张照片来自多个追随者 关于这一点,我有两个问题: 您将如何高效地制定这样一个复杂的查

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

情况将是:

  • 用户A有500个追随者
  • 每个追随者有500张照片
  • 我想生成一个查询,根据照片的创建日期一次分页(使用will_paginate)10张照片,并将其返回给用户a
因此,这基本上类似于将追随者的所有照片收集到一个集合中,根据照片创建日期对集合进行排序,然后对结果分页,一次只返回10张照片。这可能意味着最近的10张照片来自多个追随者

关于这一点,我有两个问题:

  • 您将如何高效地制定这样一个复杂的查询?(我对Rails比较陌生,所以我不太了解定制查询)
  • 有没有理由不这样做?例如,如果一个用户有1000个追随者,每个追随者有10000张照片,那么这样做是否会有延迟问题
  • 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'
    
    其中追随者/追随者只是另一个用户


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

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

    我认为这样做应该奏效:

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

    这就是你想要的吗?

    我怀疑是否会有延迟问题,因为will_paginate对查询进行了限制,在你的案例10中。但是,您需要确保数据库上存在索引

    我认为这样做应该奏效:

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

    这就是你要找的吗?

    不幸的是,这对我不起作用,因为它一直在找资料。不幸的是,这对我不起作用,因为它一直在找资料