毫秒级百万数据分页存储过程(mssql)
/****** Object: StoredProcedure [dbo].[up_Page2005] Script Date: 11/28/2013 17:10:47 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GOCREATE PROC [dbo].[up_Page2005](@TableName VARCHAR(MAX) , --表名 @Fields VARCHAR(5000) = '*' , --字段名(全部字段为*) @OrderField VARCHAR(5000) , --排序字段(必须!支持多字段) @sqlWhere VARCHAR(5000) = NULL ,--条件语句(不用加where) @pageSize INT , --每页多少条记录 @pageIndex INT = 1 --指定当前为第几页 ) AS BEGIN DECLARE @sql NVARCHAR(MAX); DECLARE @totalRecord INT; DECLARE @TotalPage INT; --计算总记录数 IF ( @SqlWhere = ''OR @sqlWhere = NULL) SET @sql = 'select @totalRecord = count(*) from ' + @TableName ELSE SET @sql = 'select @totalRecord = count(*) from ' + @TableName+ ' where 1=1 ' + @sqlWhere EXEC sp_executesql @sql, N'@totalRecord int OUTPUT',@totalRecord OUTPUT--计算总记录数 --计算总页数 SELECT @TotalPage = CEILING(( @totalRecord + 0.0 ) / @PageSize) IF ( @SqlWhere = ''OR @sqlWhere = NULL) SET @sql = 'Select top (' + CONVERT(VARCHAR, @pageSize) + ') '+ @Fields + ' FROM (select ROW_NUMBER() Over(order by '+ @OrderField + ') as 编号,' + @Fields + ' from ' + @TableName ELSE SET @sql = 'Select top (' + CONVERT(VARCHAR, @pageSize) + ') '+ @Fields + ' FROM (select ROW_NUMBER() Over(order by '+ @OrderField + ') as 编号,' + @Fields + ' from ' + @TableName+ ' where 1=1 ' + @SqlWhere --处理页数超出范围情况 IF @PageIndex <= 0 SET @pageIndex = 1 IF @pageIndex > @TotalPage SET @pageIndex = @TotalPage --处理开始点和结束点 DECLARE @StartRecord INT DECLARE @EndRecord INT SET @StartRecord = ( @pageIndex - 1 ) * @PageSize + 1 SET @EndRecord = @StartRecord + @pageSize - 1 --继续合成sql语句 SET @Sql = @Sql + ') as t where 编号>=' + CONVERT(VARCHAR, @StartRecord)+ ' order by 编号' EXEC(@Sql) IF @@Error <> 0 RETURN -1 ELSE SELECT @totalRecord ,@TotalPage ---返回记录总数,返回总页数 END
View Code
转载于:https://www.cnblogs.com/tewuapple/p/3448128.html
毫秒级百万数据分页存储过程(mssql)相关推荐
- 毫秒级百万数据分页存储过程
然后创建分页存储过程;这个是基于SQL 2005 的ROW_NUMBER的, SQL 2000 不适用; SQL 2008 我没有安装,所以也没有测试过!估计应该可以运行. 2种算法可以选择 1. 使 ...
- 毫秒级返回数据,TDengine 在大疆车载智能驾驶云端平台上的应用
小 T 导读:为了满足智能驾驶业务的数据处理需求,大疆车载试图从多家数据库中进行选型调研,帮助智能驾驶业务提升写入查询性能.降低运维成本.本文将分享大疆车载在数据库选型.系统搭建和业务迁移等方面的经验 ...
- java 倒序分页_翻动100万级的数据(自定义的MSSQL分页查询过程)
翻动 100 万级的数据 -- 只需几十毫秒 之揭秘篇:有详细的说明,不要错过. 感谢大家的支持!!! 昨天发了一个邀请,邀请大家帮忙测试,效果还可以,下面小结一下: 通过内部的计数器得知:访问次数是 ...
- 毫秒级返回数据,58同城 DBA 团队选择 TDengine 解决传感器数据处理难题
小 T 导读:在 58 同城的驾考业务上,需要存储分析驾校教练车传感器产生的数据,这是典型的时序数据场景,开发人员对原有的 TiDB 性能并不是很满意,因此 DBA 团队开始调研更具针对性的时序数据库 ...
- 千万级通用的分页存储过程
第一个方法: /* 经测试,在 14483461 条记录中查询第 100000 页,每页 10 条记录按升序和降序第一次时间均为 0.47 秒,第二次时间均为 0.43 秒,测试语法如下: e ...
- 客户端如何通过咏南中间件调用存储过程和数据分页查询和文件传输的演示
客户端如何通过咏南中间件调用存储过程和数据分页查询和文件传输的演示 演示使用MSSQL 2000的存储过程,其它类型的数据库的存储过程的语法是有所不同的. 1)MSSQL2000通用数据分页存储过程, ...
- bootstrap table无法服务器分页_[精选] MySQL百万数据,你如何用分页来查询数据
文章来自:https://www.cnblogs.com/lxwphp/p/9237331.html 商务合作: 请加微信 2230304070 精选文章正文 在开发过程中我们经常会使用分页,核心技术 ...
- mysql查询当月数据_MySQL百万数据,你如何用分页来查询数据
在开发过程中我们经常会使用分页,核心技术是使用limit进行数据的读取,在使用limit进行分页的测试过程中,得到以下数据: select * from news order by id desc l ...
- Pandas 毫秒级时间解析
Pandas 毫秒级时间解析 创建一个DataFrame 测试数据 pandas 读取中 read_csv( parse_dates=['**']) 参数 pandas自带 to_datetime() ...
最新文章
- 通过委派模式包装一个RxJavaCallAdapterFactory
- Kubernetes——基于容器技术的分布式架构领先方案,它的目标是管理跨多个主机的容器,提供基本的部署,维护以及运用伸缩...
- 循环调用dll库的界面时,首次正常,再次无响应
- iOS发展- 文件共享(使用iTunes导入文件, 并显示现有文件)
- ubuntu安装codeblock的方法
- [实战]前端wireshark抓包协议解密
- 如何使用Tornado实现WebSocket服务器?
- python无限循环的关键字_零基础学python-12.2 关键字pass,else,break,continue
- C++ 普通函数和模板函数调用规则
- git 拉取代码失败
- 递归与递推类型题小结
- python 网络设备巡检_python写的一个服务器自动巡检工具
- linux暗黑2黑屏,如何在Ubuntu 20.04中启用全局暗黑模式
- Qt下PDF阅读器的开发
- winhex的内存搜索法
- ubuntu desktop 12 lts 安装 vmplayer 问题
- 防火墙双机热备(应用场景分析及配置)
- 计算机音乐谱子 追光者,精选追光者简谱
- 文华财经程序化交易模型
- 180902 逆向-网鼎(4-dalao)