SQL分页的三种方法[通俗易懂]
三种SQL分页法 表中主键必须为标识列,[ID] int IDENTITY (1,1) 1.分页方案一:(利用Not In和SELECT TOP分页) 语句形式: SELECT TOP 10 * FROM TestTable WHERE (ID NOT IN (SELECT TOP 20 id FROM TestTable ORDER BY id)) ORDER BY ID
SELECT TOP 页大小 * FROM TestTable WHERE (ID NOT IN (SELECT TOP (页大小*(页数-1)) id FROM 表 ORDER BY id)) ORDER BY ID 2.分页方案二:(利用ID大于多少和SELECT TOP分页) 语句形式: SELECT TOP 10 * FROM TestTable WHERE (ID >= (SELECT MAX(id) FROM (SELECT TOP 21 id FROM TestTable ORDER BY id) AS T)) ORDER BY ID
SELECT TOP 页大小 * FROM TestTable WHERE (ID >= (SELECT MAX(id) FROM (SELECT TOP (页大小*(页数-1)+1) id FROM 表 ORDER BY id) AS T)) ORDER BY ID 3.分页方案三:(利用SQL的游标存储过程分页)
create procedure SqlPager @sqlstr nvarchar(4000), –查询字符串 @currentpage int, –第N页 @pagesize int –每页行数 as set nocount on declare @P1 int, –P1是游标的id @rowcount int exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1, @rowcount=@rowcount output select ceiling(1.0*@rowcount/@pagesize) as 总页数–,@rowcount as 总行数,@currentpage as 当前页 set @currentpage=(@currentpage-1)*@pagesize+1 exec sp_cursorfetch @P1,16,@currentpage,@pagesize exec sp_cursorclose @P1 set nocount off
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。 建议优化的时候,加上主键和索引,查询效率会提高。
通过SQL 查询分析器,显示比较:我的结论是: 分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句 分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句 分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用
目前我主要是用第一,第二种方案
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
相关文章
- SQL Prompt10 安装激活教程,让你写sql 如鱼得水[通俗易懂]
- SQL服务器无法启动的解决方法
- MySQL中SQL语句的使用方法(mysql中sql语句)
- sql性能优化优化Oracle中PL/SQL性能的方法(oracle中pl)
- debug 技巧 包括各种场景的debug方法详解编程语言
- SQL Server中删除字段的方法(sqlserver删除字段)
- 精通Oracle:学习SQL编写技巧(sql编写oracle)
- 技巧SQL优化:挖掘MySQL的潜在技巧(sql优化mysql)
- MySQL SQL调优:提升性能的简易方法(mysqlsql调优)
- MySQL日志跟踪:管理SQL查询性能(mysql跟踪sql语句)
- :MySQL移除重复记录的SQL语句方法(mysql删除重复sql)
- 利用Oracle SQL设计高效报表生成方法(oracle报表sql)
- 解决方案:从SQL转移到MSSQL的步骤(sql转mssql)
- 快速高效的MSSQL导入SQL方法,让数据转移无压力。(mssql导入sql)
- 关于Linux的一些常见问题和解决方法(onlinux)
- SQL Server中取出字符的有效方法(sqlserver取字符)
- SQL Server中添加新字段到已有表的方法(mssql 添加表字段)
- MySQL数据库的SQL导入方法简介(sql导入mysql数据库)
- MySQL数据库简单导出SQL脚本方法(mysql导出sql脚本)
- MySQL 中 SQL 比较详解常用语句及其实现方法(mysql中sql比较)
- MySQL SQL 平方详解 常见方法与实现方式(mysql中sql中平方)
- Oracle数据库中修改值的SQL方法简介(oracle修改值sql)
- Oracle中重置序列为1的方法(oracle中将序列置1)
- Oracle SQL题库丰富您的编程技能(oracle sql题库)
- Oracle SQL实现转置-简单快捷(oracle sql转置)
- Sql学习第一天——SQL练习题(建表/sql语句)
- C#串口通信实现方法