关于sqlsever 通用分页脚本的探索
来源:互联网 发布:最简单的进销存软件 编辑:程序博客网 时间:2024/04/29 23:47
在上一篇文章-SQLSERVER分页查询中,介绍了如何使用sql脚本进行分页,但是那种方法有个局限性,必须在设计表时把主键名称设置为id,为了解决这个问题,有了这篇文章,接下来进入正题。
先上代码
declare @begin_date datetimedeclare @end_date datetimeselect @begin_date = getdate()--code startSELECT IDENTITY(INT,1,1) as id,permission_user.* INTO #TEMPTABLEFROM permission_user ,user_role where permission_user.UserID=user_role.UserID;select top 50 numComImg.* from( select row_number() over(order by id asc) as rownumber,* from (select * FROM #TEMPTABLE) as comImg)as numComImg where rownumber>((4-1)*50)--code endDROP TABLE #TEMPTABLE;select @end_date = getdate()select datediff(ms,@begin_date,@end_date) as '毫秒'
看下效果(慢了23ms)
这里使用了局部临时表,如果对这个知识点不清楚,可以看下这篇文章,接下里对语句进行分析
SELECT IIDENTITY(INT,1,1) as temp_id,
* INTO #TEMPTABLE
FROM pagetest
select top 50 numComImg.* from
( select row_number() over(order by temp_id asc) as rownumber,* from
(select * FROM #TEMPTABLE) as comImg)
as numComImg where rownumber>((33-1)*50)
DROP TABLE #TEMPTABLE;
其中
IIDENTITY(INT,1,1) as temp_id 的作用是在目标表上追加一个自增列(注意:目标表中不允许包含有自增列,否则临时表会创建失败)
#TEMPTABLE是临时表的名字
33是页索引(从1开始)
50是每页条数
在具体应用中可能会遇到并发问题,这时候可以在构造sql脚本时为#TEMPTABLE 加上一串Guid或用户id防止并发导致的冲突
0 0
- 关于sqlsever 通用分页脚本的探索
- 关于SqlSever管理的干货
- 通用sql分页脚本
- SQLsever分页 高效率
- SqlSever大数据分页
- csv导入sqlsever脚本
- 分页的探索
- 关于通用数据库的表的分页功能
- 通用的分页类
- 通用的分页控件
- 通用的分页方法
- 通用的分页思路
- 关于编写通用脚本验证的一点思路
- 新手关于JDBC 连接SQLSever出错的解决方法
- sqlsever ,触发器的练习
- hibernate 通用分页,查询分页的泛型类
- 分页-【存储过程通用的】 【SqlServer分页】
- 通用的分页存储过程
- 电脑开机加速,一下子就提升了20几秒
- Python 内置小工具
- jquery的Deferred的对象
- C++智能指针剖析
- apache开启压缩功能
- 关于sqlsever 通用分页脚本的探索
- VS的MFC工程输出打印信息以及输出mat类型图
- Android studio里packagename和applicationId
- jQuery选择器-笔记
- 饿了么面试心得
- 解决Url带中文参数乱码问题
- [计算机网络] 基础
- Java程序员们值得一看的好书推荐
- JAVA-3.2-认识面向对象