下面是常用的分页,及其分页效率分析。

1.分页方案一:(利用Not In和SELECT TOP分页)
语句形式:

  1. SELECT TOP 10 *
  2. FROM TestTable
  3. WHERE (ID NOT IN
  4. (SELECT TOP 20 id
  5. FROM TestTable
  6. ORDER BY id))
  7. ORDER BY ID
  1. SELECT TOP 页大小 *
  2. FROM TestTable
  3. WHERE (ID NOT IN
  4. (SELECT TOP 页大小*页数 id
  5. FROM 表
  6. ORDER BY id))
  7. ORDER BY ID

2.分页方案二:(利用ID大于多少和SELECT TOP分页)

语句形式:

  1. SELECT TOP 10 *
  2. FROM TestTable
  3. WHERE (ID >
  4. (SELECT MAX(id)
  5. FROM (SELECT TOP 20 id
  6. FROM TestTable
  7. ORDER BY id) AS T))
  8. ORDER BY ID
  1. SELECT TOP 页大小 *
  2. FROM TestTable
  3. WHERE (ID > (SELECT MAX(id)
  4. FROM (SELECT TOP 页大小*页数 id
  5. FROM 表
  6. ORDER BY id) AS T))
  7. ORDER BY ID

3.分页方案三:(利用SQL的游标存储过程分页)

  1. createprocedure SqlPager
  2. @sqlstr nvarchar(4000), --查询字符串
  3. @currentpage int, --第N页
  4. @pagesize int --每页行数
  5. as
  6. set nocount on
  7. declare @P1 int, --P1是游标的id
  8. @rowcount int
  9. exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
  10. select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页
  11. set @currentpage=(@currentpage-1)*@pagesize+1
  12. exec sp_cursorfetch @P1,16,@currentpage,@pagesize
  13. exec sp_cursorclose @P1
  14. set nocount off

其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
建议优化的时候,加上主键和索引,查询效率会提高。

通过SQL 查询分析器,显示比较:我的结论是:

分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句

分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句

分页方案三:(利用SQL的游标存储过程分页)效率最差,但是最为通用

最新文章

  1. AE开发中对GDB以及shapefile的读取、对FeatureClass的相关操作
  2. 自由缩放属性resize
  3. 如何点击按钮后在加载外部的Js文件
  4. oracle数据库什么情况下创建索引比较好
  5. memcached使用说明
  6. c++:参数型别的推导
  7. jquery,js常用特效名称
  8. .NET 对象序列化和系列化德
  9. php error _report
  10. JavaScript 数组对象的去重
  11. Spring的RestTemplata使用
  12. 5.创建表,使用alter进行表信息的增删改,Oracle回收站,集合运算
  13. js_初识js_js基本语法和数据类型
  14. SQL Server数据库的兼容级别
  15. 如何让.net程序支持TLS1.2
  16. Go语言执行流程
  17. 7-(基础入门篇)关于STM32底层程序使用说明
  18. PHP输入流 php://input 相关【转】
  19. 用贪心算法近似求解 Loading Balance 问题(作业调度的负载均衡)
  20. SSL默认端口时,用http://ip:port/访问出错(转)

热门文章

  1. Installshield在安装结束时刷新系统
  2. PHP jpgraph的一点小提示(附安装方法)
  3. 推荐两个针对github的chrome插件
  4. VMware Linux 下 Nginx
  5. Zend Server的WebAPI焦点:异步操作
  6. LeetCode之Maximum Product Subarray
  7. SQL Server 数据库定时自动备份
  8. 读书笔记—CLR via C#线程27章节
  9. WCF 采用net.tcp协议
  10. 订单处理(c#实现)