will_paginate和"晚行偏移"问题

时间:2017-02-15 23:48:35

标签: mysql ruby-on-rails will-paginate

也许我正在就这个问题的话题做出一个假设,但是,这就是情况。 我有一个相当大的表 - 540万行 - 在我的Rails 4应用程序后面的mysql中。 我正在使用数据表和搜索。所有这一切都很好,但will_paginate宝石正在扼杀我们的表现。

orders = Order.not_pending.where("azonref like :search or sales_channel like :search", search: "%#{params[:sSearch]}%")
orders = orders.distinct.order("#{sort_column} #{sort_direction}")

# this next line is the killer
orders = orders.page(page).per_page(per_page)

我相信这是因为mysql和后期行偏移'问题,但是,如何避免这种情况,因为will_paginate正在生成sql?

1 个答案:

答案 0 :(得分:0)

以下是使用rails更好地使用dataTable的选项:

  1. 删除分页并完全依赖于dataTables的使用 - 这具有将所有内容推入dom的缺点,这将导致将数据传输到3mb左右的dom的速度变慢。以下是使用该示例的示例:specific js call - but look at entire project

  2. 将数据源用作ajax源或使用延迟呈现的ajax。我认为后者可能对你很感兴趣:

  3. 带有rails的ajax源(在dataTables初始化时使用“ajax”选项:

      

    “ajax”:{        “url”:“/ sample / get_url /”+“some params”,        “dataSrc”:''   }

    延迟渲染:
    https://datatables.net/examples/ajax/defer_render.html