存储过程 分页【NOT IN】和【>】效率大PK 千万级别数据测试结果
go
if exists (select * from sysobjects where name='Tonge')
drop table Tonge
create table Tonge(
ID int primary key identity(1,1),
NAME varchar(100),
PWD varchar(100),
PHONE varchar(100),
BORNDATE date default getDate()
)
go
declare @i int
set @i=0
while(@i<=100000) --插入测试数据10万条
begin
insert into Tonge values('Tonge'+Convert(varchar(2),@i),'Tonge594200'+Convert(varchar(2),@i),'16886888688',default)
set @i = @i+1
end
go
--疯狂插入法插万条插入640万条数据耗时:101s //平均 63000条/s
insert into Tonge(NAME,PWD,PHONE,BORNDATE)( select NAME,PWD,PHONE,BORNDATE from Tonge ) --疯狂插入法7次 10*2*2*2*2*2*2*2=1284万条数据
go
if exists(select * from sysobjects where name='usp_NotIn_PagedTonge')
drop procedure usp_NotIn_PagedTonge
go
create procedure usp_NotIn_PagedTonge
@PageSize int, --每页显示的条数
@PageIndex int, --当前页数
@TotalPage int output --总共页数
AS
declare @TotalCount int --总条数
select @TotalCount=COUNT(ID) from Tonge
if(@TotalCount%@PageSize=0) --总共的页数
set @TotalPage = @TotalCount/@PageSize
else
set @TotalPage = @TotalCount/@PageSize+1
if(@PageIndex=1)
select top(@PageSize) ID,NAME,PHONE,BORNDATE from Tonge
else
select top(@PageSize) ID,NAME,PHONE,BORNDATE from Tonge
where ID not in(select top(@PageSize*(@PageIndex-1)) ID from Tonge)
order by ID
GO
if exists(select * from sysobjects where name='usp_Sign_PagedTonge')
drop procedure usp_Sign_PagedTonge
go
create procedure usp_Sign_PagedTonge
@PageSize int,
@PageIndex int,
@TotalPage int output
as
declare @TotalCount int
select @TotalCount=COUNT(id) from Tonge
if(@TotalPage%@PageSize=0)
set @TotalPage=@TotalCount/@PageSize
else
set @TotalPage=@TotalCount/@PageSize +1
if(@PageIndex=1)
select top(@PageSize) ID,NAME,PHONE,BORNDATE from Tonge
else
select top(@PageSize) ID,NAME,PHONE,BORNDATE from Tonge where id >
(select max(id) from
(select top (@PageSize*(@PageIndex-1)) id from Tonge order by id) emp)
go
declare @PageSize int,@PageIndex int,@TotalPage int
select @PageSize=1000,@PageIndex=1000
--exec usp_NotIn_PagedTonge @PageSize,@PageIndex,@TotalPage output
print '当前页数'+convert(varchar(5),@PageIndex)+' 总页数:' + Convert(varchar(5),@TotalPage)
declare @PageSize int,@PageIndex int,@TotalPage int
select @PageSize=1000,@PageIndex=1000 --每页显示1万条数据,显示第10页
--exec usp_Sign_PagedTonge @PageSize,@PageIndex,@TotalPage output
print '当前页数'+convert(varchar(5),@PageIndex)+' 总页数:' + Convert(varchar(5),@TotalPage)
存储过程 分页【NOT IN】和【>】效率大PK 千万级别数据测试结果的更多相关文章
- 普通方式 分页【NOT IN】和【>】效率大PK 千万级别数据测试结果
首现创建一张表,然后插入1000+万条数据,接下来进行测试. use TTgoif exists (select * from sysobjects where name='Tonge')drop t ...
- (转)常见存储过程分页PK赛——简单测试分析常见存储过程分页速度
原文地址:http://www.cnblogs.com/yangyy753/archive/2013/01/23/2872753.html 数据的分页是我们再熟悉不过的功能了,各种各样的分页方式层出不 ...
- 改良版的SQL Service 通用存储过程分页
上次写了通用存储过程.感觉还是有很大的BUG.就是条件不能参数画化.这个BUG可以说是致命的.但是我一直想在用什么方法能解决这个东西.其实我只是想写少量的代码来做更多的事情.我想能不能传集合给存储过程 ...
- MS SQLSERVER通用存储过程分页
最近在面试的时候,遇到个奇葩的秃顶老头面试官. 问:写过存储过程分页吗? 答:没写过,但是我知道分页存储的原理,我自己也写过,只是在工作中没写过. 问:那你这么多年工作中就没写过吗? 答:的确没写过, ...
- 【原创】10万条数据采用存储过程分页实现(Mvc+Dapper+存储过程)
有时候大数据量进行查询操作的时候,查询速度很大强度上可以影响用户体验,因此自己简单写了一个demo,简单总结记录一下: 技术:Mvc4+Dapper+Dapper扩展+Sqlserver 目前主要实现 ...
- 我的sql数据库存储过程分页- -
以前用到数据库存储过程分页的时候都是用 not in 但是最近工作的时候,随着数据库记录的不断增大,发现not in的效率 真的不行 虽然都设置了索引,但是当记录达到10w的时候就发现不行了,都是需要 ...
- Mvc+Dapper+存储过程分页10万条数据
10万条数据采用存储过程分页实现(Mvc+Dapper+存储过程) 有时候大数据量进行查询操作的时候,查询速度很大强度上可以影响用户体验,因此自己简单写了一个demo,简单总结记录一下: 技术:Mvc ...
- LINQ 分页 和存储过程分页
存储过程分页 SELECT * FROM ( SELECT ROW_NUMBER() OVER(ORDER BY CreateDate DESC) AS RowNo, EstateAddress, E ...
- 设计模式之行为类模式大PK
行为类模式大PK 行为类模式包括责任链模式.命令模式.解释器模式.迭代器模式.中介者模式.备忘录模式.观察者模式.状态模式.策略 ...
随机推荐
- python学习之html从0开始(一)
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...
- php微信支付(仅Jsapi支付)详细步骤.----仅适合第一次做微信开发的程序员
本人最近做了微信支付开发,是第一次接触.其中走了很多弯路,遇到的问题也很多.为了让和我一样的新人不再遇到类似的问题,我把我的开发步骤和问题写出来,以供参考. 开发时间是2016/8/2,所以微信支付的 ...
- php计算时间差的方法
一个简单的例子:计算借书的天数,根据每天的日期进行计算. (1) 有数据库的情况 MSSQL可以使用触发器!用专门计算日期差的函数datediff()便可. MYSQL那就用两个日期字 ...
- Perl中的正则表达
前几天用到了Perl语言,主要看了一下Perl中的正则表达式,在各种网页语言中,正则表达式在处理字符串的时候十分有用,所以这里就简单说一下在Perl中正则表达式的应用. 先上代码 #!/usr/bin ...
- 别让emacs损伤你的小母指
刚接触emacs时感觉,这东西怎么这么难用,还说是编辑器的神,我去. 写个代码跟挫游戏机手柄似的,关键是还这么难挫,平时用的最多的左ctrl键,这么难按,可怜的我的小母指(Petyr Baelish) ...
- android.support.v4.widget.DrawerLayout使用
activity_main.xml布局如下: <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas ...
- OFBiz进阶之HelloWorld(二)创建热部署模块
参考文档 https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Tutorial+-+A+Beginners+Development+Guid ...
- 移动端webapp开发必备知识
移动设备的用户越来越多,每天android手机的激活量都已经超过130万台,所以我们面向移动终端的WebAPP也开始跟进了.本文主要介绍webapp的开发与调试的相关知识和经验,以及给出几种可选的解决 ...
- HighCharts 根据spline-plot-bands图,定制自己的图(区间里显示多个数据)
公司项目里有这样一个需求,根据数据绘图,但是数据很多,不可能每个点每个点的去画,这样显示的数据太密集非常的难看(更显得技术不专业),如图: 所以我和项目经理商量如何显示这个图形,按照他的意思是,按照范 ...
- shell复习---文件解压命令
需要自己部署服务端,故在申请了空间之后,需要自己安装linux自己,自己安装Apache等,所以下载的压缩文件需要运行.网上找了一些解压命令不对,特别试了下面的方法有效,特别记录一下: 用ssh 登陆 ...