我有一个非常大的 sql 查询,我使用分页。问题是分页在查询后过滤数据,我需要限制随请求携带的分页以更快地处理。
运行方案:
@request = sql.execute("select ....")
@request = @request.paginate(:per_page => 10)
我有一个非常大的 sql 查询,我使用分页。问题是分页在查询后过滤数据,我需要限制随请求携带的分页以更快地处理。
运行方案:
@request = sql.execute("select ....")
@request = @request.paginate(:per_page => 10)
您可以自己限制和抵消查询:
@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 模型中