【问题标题】:rails 2 sql and paginationrails 2 sql和分页
【发布时间】:2013-02-20 23:43:09
【问题描述】:

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

运行方案:

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

【问题讨论】:

  • 由于您使用原始 sql 来获取结果,因此您应该构建自己的分页系统。我不认为 kaminari 或 will_paginate 是为处理原始 sql 请求而构建的。
  • 你确定不是sql查询花时间?

标签: sql ruby-on-rails ruby pagination


【解决方案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 模型中

【讨论】:

    猜你喜欢
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 2021-02-05
    相关资源
    最近更新 更多