也许我正在就这个问题的话题做出一个假设,但是,这就是情况。
我有一个相当大的表 - 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?
答案 0 :(得分:0)
以下是使用rails更好地使用dataTable的选项:
删除分页并完全依赖于dataTables的使用 - 这具有将所有内容推入dom的缺点,这将导致将数据传输到3mb左右的dom的速度变慢。以下是使用该示例的示例:specific js call - but look at entire project
将数据源用作ajax源或使用延迟呈现的ajax。我认为后者可能对你很感兴趣:
带有rails的ajax源(在dataTables初始化时使用“ajax”选项:
“ajax”:{ “url”:“/ sample / get_url /”+“some params”, “dataSrc”:'' }
延迟渲染:
https://datatables.net/examples/ajax/defer_render.html