1

我有一个非常大的 sql 查询,我使用分页。问题是分页在查询后过滤数据,我需要限制随请求携带的分页以更快地处理。

运行方案:

@request = sql.execute("select ....")
@request = @request.paginate(:per_page => 10)
4

1 回答 1

1

您可以自己限制和抵消查询:

@request = sql.execute("select ... offset #{params[:page] * 10} limit #{params[:page]")

问题是如何获得分页结果,因为您实际上需要记录总数(SELECT COUNT),也许还有一些其他数据,您可以阅读一篇很好的文章,解释如何在自定义集合上使用 will_paginate,因为您正在执行您自己的查询,您正在使用自定义集合

这是文章: http: //pathfindersoftware.com/2008/06/how-to-use-will_paginate-with-non-activerecord-collectionarray/


在第二次审查时,您可以执行以下操作:

sql = " SELECT ..."
@request = MyModel.paginate_by_sql(sql, :page => params[:page] || 1, :per_page => 10)

但是您必须将选择的结果放在 ActiveRecord 模型中

于 2013-03-06T09:33:59.480 回答