毫秒级百万数据分页存储过程(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中有如下 ...
随机推荐
- 更改SQLServer实例默认字符集
转自http://www.cnblogs.com/fygh/archive/2012/05/15/2501598.html 需求 安装数据库时,将字符集安装成了“SQL_Latin1_General_ ...
- JS Date函数在safari中的问题
问题描述:在做Web的时候,在PC上用Chrome调试成功,但是在safari一测就出现了问题.经过debug发现是日期相关出现问题.查阅一些资料后发现,safari中对于JavaScript的Dat ...
- JS日期、月份的加减
JS日期.月份的加减 需要注意的是返回的月份是从0开始计算的,也就是说返回的月份要比实际月份少一个月,因此要相应的加上1 // 日期,在原有日期基础上,增加days天数,默认增加1天 function ...
- 【12】FtpWebRequest上传下载
下载文件 /// <summary> /// 下载文件 /// </summary> /// <param name="filename">&l ...
- (JSP)关于手机端(尤其是苹果手机)pdf文件无法打开的解决方案
流的方式下载附件 <!-- @author :daisy @date : 2011-12-04 @note : 从数据库中读取BLOB图片显示 --> <%@page import= ...
- Java代码生成图片验证码
1.jsp页面显示验证码,src跳转到Controller里的:getImg_validate,reloadImg()作用是点击验证码就会换一张(重新请求getImg_validate) <ul ...
- Struts 类型转换之局部和全局配置
我们碰到过很多情况,就是时间日期常常会出现错误,这是我们最头疼的事,在struts2中有一些内置转换器,也有一些需要我们自己配置. 我们为什么需要类型转换呢? 在基于HTTP协议的Web应用中 客户端 ...
- CentOS6下docker的安装和使用
CentOS6下docker的安装和使用 Docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.利用Linux的LXC.AUFS.Go语言.cgroup ...
- IEEE VIS 2018专题
PoPo数据可视化 聚焦于Web数据可视化与可视化交互领域,发现可视化领域有意思的内容.不想错过可视化领域的精彩内容, 就快快关注我们吧 :) 本文带有视频,浏览视频请关注公众号浏览. IEEE VI ...
- UOJ450. 【集训队作业2018】复读机
传送门 \(d=1\) 输出 \(k^n\) \(d=2\),构造生成函数,就是求 \[(\sum_{i=0}^{\infty}[2|i]\frac{x^i}{i!})^k[x^n]=(\frac{e ...