海量存储过程(500w数据,分页只需2秒)
这个存储过程执行的速度还不错.500W速度分页只要2秒,任何页数
可是有点问题就是,如果排序不是主键,ID,那么分页就会出错,不知道各位有什么好个意见,修改一下
-------------------------------------------------------
SQL code
create procedure SqlDataPaging
@tbName varchar(255), --表名
@tbFields varchar(1000), --返回字段
@OrderField varchar(255), --排序的字段名
@PageSize int, --页尺寸
@PageIndex int, --页码
@OrderType bit, --排序类型,1是升序,0是降序
@strWhere varchar(1500), --查询条件
@Total int output --返回总记录数
as
declare @strSql varchar(5000) --主语句
declare @strOrder varchar(200) --排序
declare @strSqlCount nvarchar(500)--查询记录总数主语句
declare @strtemp varchar(50) --排序附加语句
--------------排序-----------------1是降序,0未升序
if @OrderType !=0
begin
set @strtemp= '>(select max('
set @strOrder='order by ' + @OrderField + ' asc '
end
else
begin
set @strtemp= '<(select min('
set @strOrder='order by '+ @OrderField + ' desc'
end
--------------总记录数---------------
if @strWhere !=''
begin
set @strSqlCount='Select @TotalCout=count(*) from ' + @tbName + 'where '+ @strWhere
end
else
begin
set @strSqlCount='Select @TotalCout=count(*) from ' + @tbName
end
--------------如果是第一页------------
if @PageIndex =1
begin
if @strWhere !=''
begin
set @strSql = 'Select top' +str(@PageSize)+ ' ' + @tbFields + ' from '+ @tbName +' where ' + @strWhere + ' ' + @strOrder
end
else
begin
set @strSql = 'Select top' +str(@PageSize)+ ' ' + @tbFields + ' from '+ @tbName + ' ' + @strOrder
end
end
else
begin
if @strWhere !=''
begin
set @strSql='Select top ' +str(@PageSize) + ' ' + @tbFields
+' from ' + @tbName + ' where '+@OrderField +' '
+ @strtemp+ ' ' +@OrderField+ ') from (select top'
+str((@PageIndex-1)*@PageSize) + ' '+@OrderField +' from '+@tbName
+ @strWhere+ ' '+ @strOrder +') as tb)'+ @strOrder
end
else
begin
set @strSql='Select top ' + str(@PageSize) + ' ' + @tbFields
+' from ' + @tbName + ' where '+@OrderField + ' '
+ @strtemp+ ' ' +@OrderField+ ') from (select top'
+str((@PageIndex-1)*@PageSize) + ' '+@OrderField +' from '+@tbName
+ ' '+ @strOrder +') as tb)'+ @strOrder
end
end
exec sp_executesql @strSqlCount,N'@TotalCout int output',@Total output
exec(@strSql)
分享到:
相关推荐
sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程
SQL分页读取海量数据存储过程
分页存储过程 分页存储过程 分页存储过程 sql代码
经过项目测试,copy可以直接运用到项目中,我测试的是1千2百万数据。 如果有更好的分页,可以相互交流一下,谢谢。
海量数据分页解决方案,采用存储过程通用分页.
Java海量数据分页Bean, 适用于Oracle(适当修改,适用于任何数据库).功能描述:传入到达页码(具有容错性)、每页记录数、Select查询语句,返回该页所有的记录(整页是List集合,每条记录是一个 HashMap)、总行数、总...
资源是有点贵,但是我做了3套不同的分页出来,算一下也就不贵了。 异步海量数据分页存储过程,源码可直接copy在项目中使用。
这是本人自己写的分页存储过程,自认为很不错。呵呵。 解决了以往存储过程前后页无法避免重复记录的现象,也就是当条件字段的值有多条记录相同,而且又处在分页边缘时,前后页就会重复一条记录,感觉不爽,就写了这...
sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程
分享视频教程——BAT公司海量数据分页秒级查询落地方案实现,2020年最新录制,本课程将讲解万亿海量级数据存储方案以及秒级查询方案,并且落地实现。该课程将采用循序渐进方式一步一步带大家实现该系统,中间将穿插...
海量数据分页sql server经典.很好的数据库分页讲解
Repeater海量数据分页Repeater海量数据分页
完整SQL分页存储过程通过此过程脚本呢实现任何数据库的分页数据显示技术
很好的通过存储过程实现分页的技术,很好的通过存储过程实现分页的技术,很好的通过存储过程实现分页的技术
千万级数据分页查询存储过程SQLServer 有实例
MySql 分页 存储过程 MySql 分页 存储过程 MySql 分页 存储过程
数据海量分页数据海量分页
高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程
Oracle 存储过程 Oracle分页 oracle分页