毫秒级百万数据分页存储过程(mssql)
/****** Object: StoredProcedure [dbo].[up_Page2005] Script Date: 11/28/2013 17:10:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO CREATE 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
毫秒级百万数据分页存储过程(mssql)的更多相关文章
- mysql百万数据分页查询速度
百万数据测试 ,; 受影响的行: 时间: .080ms ,; 受影响的行: 时间: .291ms ,; 受影响的行: 时间: .557ms ,; 受影响的行: 时间: .821ms ,; 受影响的行: ...
- Ajax+存储过程真分页实例解析(10W数据毫秒级+项目解析)
周末闲来无事,突然想写个分页的东西玩玩,说走就走 在文章最后我会把整个项目+数据库附上,下载下来直接运行就可以看效果了.整个项目采用的是简单三层模式,开发平开是VS2010+SQL2012 一.我要做 ...
- 用FlexGrid做开发,轻松处理百万级表格数据
表格数据处理是我们项目开发中经常会遇到的设计需求之一,所需处理的数据量也较大,通常是万级.甚至百万级.此时,完全依赖平台自带的表格工具,往往无法加载如此大的数据量,或者加载得很慢影响程序执行. 那么, ...
- 一、 使用存储过程实现数据分页(Sql Server 2008 R2)
1.废话不多说了,直接上代码.调用这个存储过程只需要传递 表名,排序字段,搜索字段,以及页码,页码数量,搜索值(可空) create PROCEDURE NewPage --通用的分页存储过程,百万数 ...
- MongoDB设置连接池操作百万级以上数据
开发环境 spring 4.3.7 + springBoot 1.5.2 + dubbo 2.6.5 + mongoDB 4.0.0 连接池配置 mongo-pool.properties sprin ...
- 双汇大数据方案选型:从棘手的InfluxDB+Redis到毫秒级查询的TDengine
双汇发展多个分厂的能源管控大数据系统主要采用两种技术栈:InfluxDB/Redis和Kafka/Redis/HBase/Flink,对于中小型研发团队来讲,无论是系统搭建,还是实施运维都非常棘手.经 ...
- Mysql使用存储过程快速添加百万数据
前言 为了体现不加索引和添加索引的区别,需要使用百万级的数据,但是百万数据的表,如果使用一条条添加,特别繁琐又麻烦,这里使用存储过程快速添加数据,用时大概4个小时. 创建一个用户表 CREATE TA ...
- identity_insert---实验性插入大批量数据和分页存储过程
OK,我们首先创建一数据库:data_Test,并在此数据库中创建一表:tb_TestTable 1create database data_Test --创建数据库data_Test 2use da ...
- 关于处理百万级大批量数据的mysql运行几个重要点
处理大批量百万级的数据几点重要知识点: 一:设置php运行的内存配置 ini_set("memory_limit","1200M"); 在php.ini中有如下 ...
随机推荐
- struts2 servlet之间通信
Servlet之间通信的方式有两大类,每个类有三种不同的方法 1.request 2.session 3.application 不实现ServletContextAware,SessionAware ...
- C#的可空类型与不可空类型
null:为空,表示产量没有指向任何对象, 如:string = null; int a = null;//是错的 但可以这样,在类型后面加一个问号. int? a = null;//这就是正确的,是 ...
- [心平气和读经典]The TCP/IP Guide(001)
The TCP/IP Guide[Page 40,41] Introduction To the TCP/IP Guide | TCP/IP指南概述 As I sit here writing thi ...
- HDU 6187 Destroy Walls
Destroy Walls Long times ago, there are beautiful historic walls in the city. These walls divide the ...
- PTA (Advanced Level) 1066 Root of AVL Tree
Root of AVL Tree An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of ...
- OSI及TCP/IP的概念和区别
什么是TCP/IP协议 TCP/IP协议(Transfer Controln Protocol/Internet Protocol)叫做传输控制/网际协议,又叫网络通讯协议,这个协议是Internet ...
- weblogic.rjvm.PeerGoneException
并发weblogic异常,报错如下: weblogic.rjvm.PeerGoneException: ; nested exception is: weblogic.utils.net.Socket ...
- Angular2 不明真相第一个Demo例子
如果不是去年换工作接触到AngularJS,估计是不会花时间去学习这个框架的,毕竟是前端的框架,不是自己熟悉的领域.但是为了混得下去,去年就学习了AngularJS的一些用法,当时还整理了一些积累 & ...
- webstorm 连接svn
先下个Slik-Subversion,安装好,在webstorm中setting中搜索Subversion,把上边安装的地址加上\svn.exe配置在Use command line client,然 ...
- DatacontractSerializer序列化
DatacontractSerializer在命名空间System.Runtime.Serialization下.它能够序列化DataContract.DataMember标记的类. 一.序列化规则 ...