设为首页
加入收藏
联系站长
您现在的位置: 网贝 >> 建站学院 >> 数据库 >> MySQL >> 文章正文 用户登录 新用户注册
海量数据高性能分页新法         
海量数据高性能分页新法
相关网站:
作者:佚名 文章来源:网贝整理 点击数: 更新时间:2005-6-28
最近,一直在进行项目性能的优化工作,从中也有一些心得体会,拙见仅供大家参考,欢迎探讨交流!
    对于数据库分页的做法,从网上的资料综合来看,大体分为三类:
    1。根据ID分页
    2。使用Top分页
    3。利用Not In分页
    这三种方法中,速度最快的是第一种,第二种其次,第三种是最慢的。第一种方法虽然最快,但是,在实际的应用中,其实并不多。因为,基本上没有页面会根据ID来排序,通常都是根据某(几)个有意义的字段来排序。第二种方法是我平常用的最多的,Top的效率还是不错的。第三种方法,由于会引起全表扫描,所以,一般不怎么推荐使用。在这里,第二和第三种方法都有一个缺点,就是随着页数的增多,越是靠后的数据,获取越慢。
    所以,我在思考,有没有一种比Top更快的方法呢?现知的就只有按照ID分页了,但是,我的数据中没有ID字段,那么我可以做一个变通,把要排序的(一个或多个)字段组合成一个相当于ID功效的东西来看待,然后,对这个组合字段排序。我的表达可能不是很清楚,那么我们举个例子吧。
    现有一表:工厂物料表,数据量60万
    TblOrgItem
    (
        OID nvarchar(40),--自动产生的GRID
        OrgCode nvarchar(50),--工厂代码
        OrgName nvarchar(50),--工厂名称
        ItemNo nvarchar(50),--物料编码
        ItemName nvarchar(50),--物料名称
        ......
    )
    需求:按照先"工厂代码"升序,再"物料编码"升序的顺序排序显示
    那么这个时候我们可以把"工厂代码"+"物料编码"的组合看作是一个主键,然后对它进行分页。在这里,我们需要这么几个参数:
    传入参数:
    @PageSize int,
    @PageIndex int,
    @LastOrgCode nvarchar(50),--上一页最后一条记录的工厂代码
    @LastItemNo nvarchar(50),--上一页最后一条记录的物料编码
    组合起来的分页SQL应该就是这样的了,我直接写了,实际执行的时候要拼凑成字符串动态执行:
    select top @PagaSize OrgCode,OrgName,ItemNo,ItemName from TblOrgItem
                where OrgCode>=@LastOrgCode and ItemNo>@LastItemNo --如果是第一页,可以不用这一行
                Order by OrgCode,ItemNo
    注:对于组合字段大于2个及2个以上的,Where 条件的写法是:前面的字段都是用">="判断,只有最后一个字段使用">"判断。
    这个分页SQL执行的效率应该比较接近用ID进行分页的效率了,如果,再在这个表的OrgCode,ItemNo字段上加上聚集索引的话,分页的效果又会更上一层楼了!


文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    相关网站:

    文章 下载 图片
    普通文章海量数据高性能分页
    普通文章phpMyAdmin 2.x.x -
    普通文章Linux下PhpMyAdmin程
    普通文章phpmyAdmin使用说明
    普通文章PHPMYADMIN使用简单
    推荐文章[组图]快速上手 MyS
    普通文章学习使用数据库MySQ
    推荐文章MySQL数据导入导出方
    推荐文章[组图]快速上手 MyS
    推荐文章MySQL数据导入导出方
    推荐文章[组图]phpMyAdmin安
    推荐文章MySQL入门学习
    推荐文章谈谈数据从sql serv
    普通文章把手教你写私服列表
    普通文章WEB标准
    普通文章GOOGLE sitemap官方
    普通文章用php定制404错误页
    普通文章WAP(wml)开发问答
    普通文章[组图]PS教程系列:快
    普通文章时使用apache和IIS,
    普通文章[组图]2005年的第一
    推荐文章[组图]彻底掌握IIS6
    推荐文章[组图]CSS 全攻略
    推荐文章各种脚本错误详解!
    推荐文章直接生成XML的Googl
    推荐文章九个常见的错误原因
    推荐文章Win XP家用版也能装
    推荐文章JSP入门初级教程之J
    推荐文章ASP入门及提高
  • 只能限制输入中文

  • js分页


  • 快速上手 MySQL --

    phpMyAdmin安装图解
    (只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    Copyright © 2003-2005 NetBei.com All rights reserved.