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

    图一 单表分页耗时

    图二 多表分页耗时

  • 相关阅读:
    python 实现redis订阅发布功能
    python装饰器实现对异常代码出现进行监控
    回首2017 展望2018
    结合jira搭建自动化测试平台
    安装YApi 接口管理平台
    Django 连接mysql数据库中文乱码
    在django admin中添加自定义视图
    django 模型models
    用户行为分析数据库设计
    vCenter Server 6 Standard
  • 原文地址:https://www.cnblogs.com/wlandwl/p/bigpage.html
Copyright © 2020-2023  润新知