Pagination 哪种方法是进行分页的最佳方法,以使服务器上的负载最小

Pagination 哪种方法是进行分页的最佳方法,以使服务器上的负载最小,pagination,operation,Pagination,Operation,我对分页做了一些研究,从我所读到的内容来看,有两个相互矛盾的解决方案 每次用户单击“下一步”时,从数据库加载一小部分数据 问题-假设有一百万行满足任何WHERE条件。这意味着将检索、存储和文件排序一百万行,然后丢弃其中大部分,只检索20行。如果用户单击“下一步”按钮,同样的过程再次发生,只会检索到不同的20。(参考-http://www.mysqlperformanceblog.com/2008/09/24/four-ways-to-optimize-paginated-displays/) 从

我对分页做了一些研究,从我所读到的内容来看,有两个相互矛盾的解决方案

  • 每次用户单击“下一步”时,从数据库加载一小部分数据 问题-假设有一百万行满足任何WHERE条件。这意味着将检索、存储和文件排序一百万行,然后丢弃其中大部分,只检索20行。如果用户单击“下一步”按钮,同样的过程再次发生,只会检索到不同的20。(参考-http://www.mysqlperformanceblog.com/2008/09/24/four-ways-to-optimize-paginated-displays/

  • 从数据库加载所有数据并缓存它…这里也提到了一些问题-http://www.javalobby.org/java/forums/t63849.html

  • 所以我知道我将不得不使用两者的混合..然而问题归结为-哪个操作更昂贵- 在数据库中重复查询小块数据 或
    通过网络传输大量结果集

    我的公司正是这种情况,我们选择了一种混合模式。我们的数据是表格格式的,所以我们通过AJAX将其发送到服务器,这样就可以实现良好的UI格式设置、排序、过滤以及列的显示/隐藏。Datatables有一个很好的解决方案,它将“提前排队”,称为“流水线”,它将在用户操作之前获取大量数据(在我们的例子中,最多是他们请求的记录的5倍),然后无请求地翻页,直到数据用完为止。使用Datatables实现起来非常容易,但我怀疑,如果必须使用jQuery的AJAX功能手工编写,那么类似的解决方案也不难

    我试着在一个150万条记录的数据库上进行满负荷缓存,结果是火车失事了。客户差点把我甩了,因为他们气得太慢了。在一夜的阿贾克斯之旅之后,客户再次感到高兴。但最好不要到那个地步


    祝你好运。

    我的公司正处于这种情况,我们选择了一款混合动力车。我们的数据是表格格式的,所以我们通过AJAX将其发送到服务器,这样就可以实现良好的UI格式设置、排序、过滤以及列的显示/隐藏。Datatables有一个很好的解决方案,它将“提前排队”,称为“流水线”,它将在用户操作之前获取大量数据(在我们的例子中,最多是他们请求的记录的5倍),然后无请求地翻页,直到数据用完为止。使用Datatables实现起来非常容易,但我怀疑,如果必须使用jQuery的AJAX功能手工编写,那么类似的解决方案也不难

    我试着在一个150万条记录的数据库上进行满负荷缓存,结果是火车失事了。客户差点把我甩了,因为他们气得太慢了。在一夜的阿贾克斯之旅之后,客户再次感到高兴。但最好不要到那个地步

    祝你好运