找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4698|回复: 0

[SQL SERVER] 高效分页存储过程 花一段时间写了个分页存储过程

[复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2011-5-10 21:38:29 | 显示全部楼层 |阅读模式
此存储过程可产生3形式中SQL语句

形式一(主要实现对无主键表的分页,可以任意字段排序,但是效率很低)
  1. exec [PROC_Pagination] 'articles',@Orderfld='articleid',@PageIndex=2

  2. SELECT * FROM (SELECT TOP 10 * FROM
  3. (SELECT TOP 20  * FROM articles ORDER BY articleid ASC ) TB2
  4. Order by articleid desc ) TB3
  5. ORDER BY articleid ASC
复制代码
形式二(适应大部分分页操作,可以任意字段排序,但是当数据量很大时,达到百万级时,效率会有所影响)
  1. exec [PROC_Pagination] 'articles',@Orderfld='Title',@PageIndex=2,@FKColumn='articleid'

  2. SELECT TOP 10  *  FROM articles WHERE articleid NOT IN
  3. (SELECT TOP 10 articleid FROM articles  ORDER BY articleid ASC )  
  4. ORDER BY articleid ASC
复制代码
形式三(适合以唯一主键排序且数据量很大时)
  1. exec [PROC_Pagination] 'articles',@Orderfld='articleid',@PageIndex=2,@FKColumn='articleid'

  2. SELECT TOP 10  *  FROM articles WHERE(articleid>(SELECT MAX(articleid)
  3. FROM (SELECT TOP 10 articleid FROM articles  ORDER BY articleid ASC ) AS T))  
  4. ORDER BY articleid ASC
复制代码
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表