zoukankan      html  css  js  c++  java
  • 数据绑定到分页的快速开发最佳实践

            项目中要使用分页的地方很多,园子里面也有很多各种分页方法的性能测试。但是如何既能满足快速开发的要求,又能保证良好的性能这是需要值得权衡的事情。经过几天的测试,我觉得比较好的方法是通用存储过程+ajax分页,为什么呢。且看以下分析。

           使用通用存储过程,大大的节约了开发时间,一般情况下的分页,涉及的查询无非是单表多表查询,按条件排排序之类的,所以有个通用存储过程可以省很多力气。特殊的再使用专用的存储过程来解决。网上的这种通用SP比较多,我自己改了一个,这个SP经过长期使用,没有什么问题。里面优化了首页、尾页的算法,查询时经测试,前后翻页速度在1900W级别时也能基本保持一致。

     存储过程如下

    Code

     一般的,我们需要一个total来显示在页面,如果直接在sp里面执行,效率在小表里面看不出来,如果在百W级别、千W级别里面,性能差距是相当明显,下面这个SP是自带total返回的,

    Code

     如果你的分页控件需要后台绑定total,则用第二个SP,但这里,我真的向你推荐使用第一种不带TOTAL返回的,最佳做法是在页面前台,使用一个ajax异步查询total,然后绑定到ajax的分页上。这样性能将是最佳的。

    在1900w级的测试中,ajax分页和后台绑定total的性能测试中, 其首次加载页面的性能体验差距基本上是10倍计。

    因此,分页的快速开发最佳做法是通用sp+ajax分页,至于数据绑定,泛型还是dataset,我的建议是能用泛型的时候还是泛型,不是因为性能好,而是因为从后翻页泛型的效率和首页加载的性能基本一致。而dataset效率慢了4.5倍左右。 数据可以绑定到gridview,也可以仍然使用ajax传递,看你项目需要了,这个不是必须的。

     需要说明的是,目前这个sp还不支持group by,多字段排序也不支持,如果你有这个需要,需要改一改了。

  • 相关阅读:
    git的使用
    本体建模
    word2vec改进之Negative Sampling
    word2vec改进之Hierarchical Softmax
    word2vec原理
    Window下mysql的安装
    PageRank算法
    集成学习-------简单介绍
    自我介绍
    Apollo学习笔记(二):循迹实现过程
  • 原文地址:https://www.cnblogs.com/emilchan/p/1608037.html
Copyright © 2011-2022 走看看