我想要实现的目标(以低效的方式)可以像这样完成:
records = SomeModel.where(:some_field => "some value").all
required_record = records[n]
...其中n是作用域(由“where”)结果中记录的给定位置。
显然,对于大桌来说效率很低。有没有办法在不获取所有记录的情况下实现这一目标?
答案 0 :(得分:4)
使用offset
和limit
的组合来仅获取所需的行。例如,仅获得第5个结果:
SomeModel.where(:some_field => "some value").offset(5).limit(1)
答案 1 :(得分:0)
呃,我不确定我理解你的问题......数据库通常不关心行的顺序,所以你是否按字段排序?如果是这样,你可以在PostgreSQL中使用类似rank()函数的东西(http://www.postgresql.org/docs/current/static/tutorial-window.html)。