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语句写在存储过程中,可以充分展现分页的效果。

    图一 单表分页耗时

    图二 多表分页耗时

  • 相关阅读:
    组合数学
    gcd和lcm
    快速幂
    线性求逆元
    5月月赛(* ̄︿ ̄)
    通往奥格瑞玛的道路
    Dijkstra学习笔记
    动态规划笔记(2)
    美军战略指导:《维持美国的世界领导力:21世纪国防的优先事项》
    ACM/ICPC2016沈阳网络赛(不完全)解题报告
  • 原文地址:https://www.cnblogs.com/wlandwl/p/bigpage.html
Copyright © 2011-2022 走看看