zoukankan      html  css  js  c++  java
  • SqlSever大数据分页【转】

         在sql sever中大数据的分页一直是难以处理的一块,利用id自增列分页也存在不足之处。从一个相对全面的分页看,sql sever2005中新增的row_number()函数解决了这个问题。还是从一个实际项目开始介绍吧。中国铁建股份公司的项目表中数据很大,开发之初用的是GridView控件自带的分页,在运行一年以后,点击下一页终于是难以等待了,系统需要优化。对于分页的改进是业务的需要。于是,我采用了Row_number()函数分页。也算一解了燃眉之急。

    说明:该篇文章只是一个案例的说明,更详细的理论请查看随笔《大数据分页实现与性能优化》

    提高分页效率主要有:
    (1)充分利用外键,以提高表连接速度
    (2)尽可能使用自然链接,尽量避免使用外连接
    (3)尽可能将记录少的表放在连接的左边,以减少先处理的记录数
    (4)尽可能先选择,后连接,以减少处理的数据量
    (5)有可能的时候建立视图,充分使用数据库自身的优化功能

    以下为分页查询的sql语句:

    select * from
    (select t_gcxm_test.sgdw,t_gcxm_test.id,xmmc,t_gcxm_test.gclb as gclb,gchte,gchte - kl2 as xmsyjzl,
    kl2 as klsl,dwmc,lry ,Row_number() over(order by t_gcxm_test.id desc) as IDRank 
    from t_dw,t_gcxm_test where t_dw.dwid=t_gcxm_test.sgdw  and (sgdw like'gf12%' and ((sgdw <>'gf12' and fgcid is  null)or(sgdw ='gf12' )) or  lry =  'gf12gao'))
    as b
    where IDRank>=50023 and IDRank<50033

    其中的IDRank的值可通过web网页,传递过来。把分页的sql语句写在存储过程中,可以充分展现分页的效果。

    图一 单表分页耗时

    图二 多表分页耗时

     

    【文章出处:http://www.cnblogs.com/wlandwl/archive/2014/09/25/bigpage.html】

     

  • 相关阅读:
    poj 1860 Currency Exchange(最短路径的应用)
    poj 2965 The Pilots Brothers' refrigerator
    zoj 1827 the game of 31 (有限制的博弈论)
    poj 3295 Tautology (构造法)
    poj 1753 Flip Game(枚举)
    poj 2109 (贪心)
    poj 1328(贪心)
    Qt 对单个控件美化
    Qt 4基础
    Bash Shell
  • 原文地址:https://www.cnblogs.com/SavionZhang/p/3994115.html
Copyright © 2011-2022 走看看