在项目中,我们经常遇到或用到分页,那么在大数据量(百万级以上)下,哪种分页算法效率最优呢?我们不妨用事实说话。

测试环境

硬件:CPU 酷睿双核T5750  内存:2G

软件:Windows server 2003    +   Sql server 2005

OK,我们首先创建一数据库:data_Test,并在此数据库中创建一表:tb_TestTable

(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
1(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码create database data_Test  --创建数据库data_Test
2(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码GO
3(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码use data_Test
4(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码GO
5(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码create table tb_TestTable   --创建表
6(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码(
7(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    id int identity(1,1) primary key,
8(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    userName nvarchar(20) not null,
9(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    userPWD nvarchar(20) not null,
10(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    userEmail nvarchar(40) null
11(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码)
12(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码GO
(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码

然后我们在数据表中插入2000000条数据:

(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
1(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码--插入数据
2(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码set identity_insert tb_TestTable on
3(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码declare @count int
4(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码set @count=1
5(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码while @count<=2000000
6(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码begin 
7(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    insert into tb_TestTable(id,userName,userPWD,userEmail) values(@count,'admin','admin888','lli0077@yahoo.com.cn')
8(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @count=@count+1
9(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码end
10(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码set identity_insert tb_TestTable off
(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码

我首先写了五个常用存储过程:

1,利用select top 和select not in进行分页,具体代码如下:

(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
1(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码create procedure proc_paged_with_notin  --利用select top and select not in
2(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码(
3(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    @pageIndex int--页索引
4(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    @pageSize int    --每页记录数
5(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码)
6(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码as
7(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码begin
8(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set nocount on;
9(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    declare @timediff datetime --耗时
10(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    declare @sql nvarchar(500)
11(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    select @timediff=Getdate()
12(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @sql='select top '+str(@pageSize)+' * from tb_TestTable where(ID not in(select top '+str(@pageSize*@pageIndex)+' id from tb_TestTable order by ID ASC)) order by ID'
13(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    execute(@sql--因select top后不支技直接接参数,所以写成了字符串@sql
14(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    select datediff(ms,@timediff,GetDate()) as 耗时
15(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set nocount off;
16(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码end
(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码

2,利用select top 和 select max(列键)

(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
1(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码create procedure proc_paged_with_selectMax  --利用select top and select max(列)
2(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码(
3(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    @pageIndex int--页索引
4(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    @pageSize int    --页记录数
5(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码)
6(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码as
7(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码begin
8(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码set nocount on;
9(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    declare @timediff datetime
10(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    declare @sql nvarchar(500)
11(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    select @timediff=Getdate()
12(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @sql='select top '+str(@pageSize)+' * From tb_TestTable where(ID>(select max(id) From (select top '+str(@pageSize*@pageIndex)+' id From tb_TestTable order by ID) as TempTable)) order by ID'
13(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    execute(@sql)
14(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    select datediff(ms,@timediff,GetDate()) as 耗时
15(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码set nocount off;
16(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码end
(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码

3,利用select top和中间变量--此方法因网上有人说效果最佳,所以贴出来一同测试

(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
1(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码create procedure proc_paged_with_Midvar  --利用ID>最大ID值和中间变量
2(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码(
3(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    @pageIndex int,
4(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    @pageSize int
5(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码)
6(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码as
7(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    declare @count int
8(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    declare @ID int
9(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    declare @timediff datetime
10(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    declare @sql nvarchar(500)
11(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码begin
12(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码set nocount on;
13(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    select @count=0,@ID=0,@timediff=getdate()
14(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    select @count=@count+1,@ID=case when @count<=@pageSize*@pageIndex then ID else @ID end from tb_testTable order by id
15(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @sql='select top '+str(@pageSize)+' * from tb_testTable where ID>'+str(@ID)
16(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    execute(@sql)
17(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    select datediff(ms,@timediff,getdate()) as 耗时
18(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码set nocount off;
19(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码end
20(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码

4,利用Row_number() 此方法为SQL server 2005中新的方法,利用Row_number()给数据行加上索引

(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
1(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码create procedure proc_paged_with_Rownumber  --利用SQL 2005中的Row_number()
2(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码(
3(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    @pageIndex int,
4(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    @pageSize int
5(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码)
6(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码as
7(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    declare @timediff datetime
8(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码begin
9(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码set nocount on;
10(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    select @timediff=getdate()
11(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    select * from (select *,Row_number() over(order by ID asc) as IDRank from tb_testTable) as IDWithRowNumber where IDRank>@pageSize*@pageIndex and IDRank<@pageSize*(@pageIndex+1)
12(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    select datediff(ms,@timediff,getdate()) as 耗时
13(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码set nocount off;
14(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码end
15(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码

5,利用临时表及Row_number

(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
1(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码create procedure proc_CTE  --利用临时表及Row_number
2(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码(
3(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    @pageIndex int--页索引
4(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    @pageSize int    --页记录数
5(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码)
6(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码as
7(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set nocount on;
8(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    declare @ctestr nvarchar(400)
9(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    declare @strSql nvarchar(400)
10(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    declare @datediff datetime
11(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码begin
12(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    select @datediff=GetDate()
13(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @ctestr='with Table_CTE as
14(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                (select ceiling((Row_number() over(order by ID ASC))/'+str(@pageSize)+') as page_num,* from tb_TestTable)';
15(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @strSql=@ctestr+' select * From Table_CTE where page_num='+str(@pageIndex)
16(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码end
17(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    begin
18(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码        execute sp_executesql @strSql
19(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码        select datediff(ms,@datediff,GetDate())
20(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set nocount off;
21(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    end
22(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码

OK,至此,存储过程创建完毕,我们分别在每页10条数据的情况下在第2页,第1000页,第10000页,第100000页,第199999页进行测试,耗时单位:ms  每页测试5次取其平均值

存过 第2页耗时 第1000页耗时 第10000页耗时 第100000页耗时 第199999页耗时 效率排行
1用not in 0ms 16ms 47ms 475ms 953ms 3
2用select max 5ms 16ms 35ms 325ms 623ms 1
3中间变量 966ms 970ms 960ms 945ms 933ms 5
4row_number 0ms 0ms 34ms 365ms 710ms 2
4临时表 780ms 796ms 798ms 780ms 805ms 4

 

测试结果显示:select max >row_number>not in>临时表>中间变量

于是我对效率最高的select max方法用2分法进行了扩展,代码取自互联网,我修改了ASC排序时取不到值的BUG,测试结果:

2分法 156ms 156ms 180ms 470ms 156ms 1*

 

 

从测试结果来看,使用2分法确实可以提高效率并使效率更为稳定,我又增加了第159999页的测试,用时仅296ms,效果相当的不错!

下面是2分法使用select max的代码,已相当完善。

(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
  1(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码--/*-----存储过程 分页处理 孙伟 2005-03-28创建 -------*/
  2(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码--/*-----存储过程 分页处理 浪尘 2008-9-1修改----------*/
  3(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码--/*----- 对数据进行了2分处理使查询前半部分数据与查询后半部分数据性能相同 -------*/
  4(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
  5(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码alter PROCEDURE proc_paged_2part_selectMax
  6(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码(
  7(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码@tblName     nvarchar(200),        ----要显示的表或多个表的连接
  8(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码@fldName     nvarchar(500) = '*',    ----要显示的字段列表
  9(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码@pageSize    int = 10,        ----每页显示的记录个数
10(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码@page        int = 1,        ----要显示那一页的记录
11(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码@fldSort    nvarchar(200) = null,    ----排序字段列表或条件
12(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码@Sort        bit = 0,        ----排序方法,0为升序,1为降序(如果是多字段排列Sort指代最后一个排序字段的排列顺序(最后一个排序字段不加排序标记)--程序传参如:' SortA Asc,SortB Desc,SortC ')
13(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码@strCondition    nvarchar(1000) = null,    ----查询条件,不需where
14(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码@ID        nvarchar(150),        ----主表的主键
15(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码@Dist                 bit = 0,           ----是否添加查询字段的 DISTINCT 默认0不添加/1添加
16(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码@pageCount    int = 1 output,            ----查询结果分页后的总页数
17(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码@Counts    int = 1 output                ----查询到的记录数
18(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码)
19(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码AS
20(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码SET NOCOUNT ON
21(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码Declare @sqlTmp nvarchar(1000)        ----存放动态生成的SQL语句
22(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码Declare @strTmp nvarchar(1000)        ----存放取得查询结果总数的查询语句
23(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码Declare @strID     nvarchar(1000)        ----存放取得查询开头或结尾ID的查询语句
24(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
25(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码Declare @strSortType nvarchar(10)    ----数据排序规则A
26(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码Declare @strFSortType nvarchar(10)    ----数据排序规则B
27(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
28(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码Declare @SqlSelect nvarchar(50)         ----对含有DISTINCT的查询进行SQL构造
29(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码Declare @SqlCounts nvarchar(50)          ----对含有DISTINCT的总数查询进行SQL构造
30(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
31(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码declare @timediff datetime  --耗时测试时间差
32(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码select @timediff=getdate()
33(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
34(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码if @Dist  = 0
35(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码begin
36(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @SqlSelect = 'select '
37(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @SqlCounts = 'Count(*)'
38(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码end
39(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码else
40(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码begin
41(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @SqlSelect = 'select distinct '
42(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @SqlCounts = 'Count(DISTINCT '+@ID+')'
43(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码end
44(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
45(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
46(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码if @Sort=0
47(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码begin
48(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @strFSortType=' ASC '
49(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @strSortType=' DESC '
50(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码end
51(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码else
52(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码begin
53(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @strFSortType=' DESC '
54(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @strSortType=' ASC '
55(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码end
56(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
57(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
58(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
59(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码--------生成查询语句--------
60(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码--此处@strTmp为取得查询结果数量的语句
61(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码if @strCondition is null or @strCondition=''     --没有设置显示条件
62(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码begin
63(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @sqlTmp =  @fldName + ' From ' + @tblName
64(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @strTmp = @SqlSelect+' @Counts='+@SqlCounts+' FROM '+@tblName
65(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @strID = ' From ' + @tblName
66(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码end
67(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码else
68(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码begin
69(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @sqlTmp = + @fldName + 'From ' + @tblName + ' where (1>0) ' + @strCondition
70(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @strTmp = @SqlSelect+' @Counts='+@SqlCounts+' FROM '+@tblName + ' where (1>0) ' + @strCondition
71(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @strID = ' From ' + @tblName + ' where (1>0) ' + @strCondition
72(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码end
73(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
74(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码----取得查询结果总数量-----
75(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码exec sp_executesql @strTmp,N'@Counts int out ',@Counts out
76(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码declare @tmpCounts int
77(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码if @Counts = 0
78(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @tmpCounts = 1
79(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码else
80(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @tmpCounts = @Counts
81(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
82(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    --取得分页总数
83(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @pageCount=(@tmpCounts+@pageSize-1)/@pageSize
84(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
85        if @page>@pageCount
87(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码        set @page=@pageCount
88(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
89(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    --/*-----数据分页2分处理-------*/
90(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    declare @pageIndex int --总数/页大小
91(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    declare @lastcount int --总数%页大小 
92(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
93(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @pageIndex = @tmpCounts/@pageSize
94(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    set @lastcount = @tmpCounts%@pageSize
95(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    if @lastcount > 0
96(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码        set @pageIndex = @pageIndex + 1
97(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    else
98(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码        set @lastcount = @pagesize
99(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
100(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    --//***显示分页
101(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    if @strCondition is null or @strCondition=''     --没有设置显示条件
102(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    begin
103(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码        if @pageIndex<2 or @page<=@pageIndex / 2 + @pageIndex % 2   --前半部分数据处理
104(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码            begin 
105(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                if @page=1
106(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    set @strTmp=@SqlSelect+' top '+ CAST(@pageSize as VARCHAR(4))+' '+ @fldName+' from '+@tblName                        
107(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' order by '+ @fldSort +' '+ @strFSortType
108(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                else
109(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                begin
110(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    if @Sort=1
111(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    begin                    
112(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    set @strTmp=@SqlSelect+' top '+ CAST(@pageSize as VARCHAR(4))+' '+ @fldName+' from '+@tblName
113(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' where '+@ID+' <(select min('+ @ID +') from ('+ @SqlSelect+' top '+ CAST(@pageSize*(@page-1) as Varchar(20)) +' '+ @ID +' from '+@tblName
114(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' order by '+ @fldSort +' '+ @strFSortType+') AS TBMinID)'
115(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' order by '+ @fldSort +' '+ @strFSortType
116(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    end
117(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    else
118(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    begin
119(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    set @strTmp=@SqlSelect+' top '+ CAST(@pageSize as VARCHAR(4))+' '+ @fldName+' from '+@tblName
120(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' where '+@ID+' >(select max('+ @ID +') from ('+ @SqlSelect+' top '+ CAST(@pageSize*(@page-1) as Varchar(20)) +' '+ @ID +' from '+@tblName
121(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' order by '+ @fldSort +' '+ @strFSortType+') AS TBMinID)'
122(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' order by '+ @fldSort +' '+ @strFSortType 
123(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    end
124(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                end    
125(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码            end
126(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码        else
127(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码            begin
128(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码            set @page = @pageIndex-@page+1 --后半部分数据处理
129(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                if @page <= 1 --最后一页数据显示                
130(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    set @strTmp=@SqlSelect+' * from ('+@SqlSelect+' top '+ CAST(@lastcount as VARCHAR(4))+' '+ @fldName+' from '+@tblName
131(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' order by '+ @fldSort +' '+ @strSortType+') AS TempTB'+' order by '+ @fldSort +' '+ @strFSortType 
132(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                else
133(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    if @Sort=1
134(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    begin
135(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    set @strTmp=@SqlSelect+' * from ('+@SqlSelect+' top '+ CAST(@pageSize as VARCHAR(4))+' '+ @fldName+' from '+@tblName
136(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' where '+@ID+' >(select max('+ @ID +') from('+ @SqlSelect+' top '+ CAST(@pageSize*(@page-2)+@lastcount as Varchar(20)) +' '+ @ID +' from '+@tblName
137(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' order by '+ @fldSort +' '+ @strSortType+') AS TBMaxID)'
138(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' order by '+ @fldSort +' '+ @strSortType+') AS TempTB'+' order by '+ @fldSort +' '+ @strFSortType
139(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    end
140(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    else
141(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    begin
142(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    set @strTmp=@SqlSelect+' * from ('+@SqlSelect+' top '+ CAST(@pageSize as VARCHAR(4))+' '+ @fldName+' from '+@tblName
143(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' where '+@ID+' <(select min('+ @ID +') from('+ @SqlSelect+' top '+ CAST(@pageSize*(@page-2)+@lastcount as Varchar(20)) +' '+ @ID +' from '+@tblName
144(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' order by '+ @fldSort +' '+ @strSortType+') AS TBMaxID)'
145(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' order by '+ @fldSort +' '+ @strSortType+') AS TempTB'+' order by '+ @fldSort +' '+ @strFSortType 
146(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    end
147(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码            end
148(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    end
149(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
150(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    else --有查询条件
151(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    begin
152(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码        if @pageIndex<2 or @page<=@pageIndex / 2 + @pageIndex % 2   --前半部分数据处理
153(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码        begin
154(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                if @page=1
155(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    set @strTmp=@SqlSelect+' top '+ CAST(@pageSize as VARCHAR(4))+' '+ @fldName+' from '+@tblName                        
156(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' where 1=1 ' + @strCondition + ' order by '+ @fldSort +' '+ @strFSortType
157(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                else if(@Sort=1)
158(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                begin                    
159(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    set @strTmp=@SqlSelect+' top '+ CAST(@pageSize as VARCHAR(4))+' '+ @fldName+' from '+@tblName
160(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' where '+@ID+' <(select min('+ @ID +') from ('+ @SqlSelect+' top '+ CAST(@pageSize*(@page-1) as Varchar(20)) +' '+ @ID +' from '+@tblName
161(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' where (1=1) ' + @strCondition +' order by '+ @fldSort +' '+ @strFSortType+') AS TBMinID)'
162(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' '+ @strCondition +' order by '+ @fldSort +' '+ @strFSortType
163(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                end
164(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                else
165(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                begin
166(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    set @strTmp=@SqlSelect+' top '+ CAST(@pageSize as VARCHAR(4))+' '+ @fldName+' from '+@tblName
167(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' where '+@ID+' >(select max('+ @ID +') from ('+ @SqlSelect+' top '+ CAST(@pageSize*(@page-1) as Varchar(20)) +' '+ @ID +' from '+@tblName
168(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' where (1=1) ' + @strCondition +' order by '+ @fldSort +' '+ @strFSortType+') AS TBMinID)'
169(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' '+ @strCondition +' order by '+ @fldSort +' '+ @strFSortType 
170(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                end           
171(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码        end
172(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码        else
173(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码        begin 
174(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码            set @page = @pageIndex-@page+1 --后半部分数据处理
175(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码            if @page <= 1 --最后一页数据显示
176(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    set @strTmp=@SqlSelect+' * from ('+@SqlSelect+' top '+ CAST(@lastcount as VARCHAR(4))+' '+ @fldName+' from '+@tblName
177(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' where (1=1) '+ @strCondition +' order by '+ @fldSort +' '+ @strSortType+') AS TempTB'+' order by '+ @fldSort +' '+ @strFSortType                     
178(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码            else if(@Sort=1)
179(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    set @strTmp=@SqlSelect+' * from ('+@SqlSelect+' top '+ CAST(@pageSize as VARCHAR(4))+' '+ @fldName+' from '+@tblName
180(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' where '+@ID+' >(select max('+ @ID +') from('+ @SqlSelect+' top '+ CAST(@pageSize*(@page-2)+@lastcount as Varchar(20)) +' '+ @ID +' from '+@tblName
181(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' where (1=1) '+ @strCondition +' order by '+ @fldSort +' '+ @strSortType+') AS TBMaxID)'
182(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' '+ @strCondition+' order by '+ @fldSort +' '+ @strSortType+') AS TempTB'+' order by '+ @fldSort +' '+ @strFSortType    
183(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码            else
184(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                    set @strTmp=@SqlSelect+' * from ('+@SqlSelect+' top '+ CAST(@pageSize as VARCHAR(4))+' '+ @fldName+' from '+@tblName
185(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' where '+@ID+' <(select min('+ @ID +') from('+ @SqlSelect+' top '+ CAST(@pageSize*(@page-2)+@lastcount as Varchar(20)) +' '+ @ID +' from '+@tblName
186(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' where (1=1) '+ @strCondition +' order by '+ @fldSort +' '+ @strSortType+') AS TBMaxID)'
187(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码                        +' '+ @strCondition+' order by '+ @fldSort +' '+ @strSortType+') AS TempTB'+' order by '+ @fldSort +' '+ @strFSortType            
188(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码        end    
189(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码    end
190(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
191(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码------返回查询结果-----
192(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码exec sp_executesql @strTmp
193(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码select datediff(ms,@timediff,getdate()) as 耗时
194(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码--print @strTmp
195(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码SET NOCOUNT OFF
196(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码GO
197(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码
(转)大数据量分页存储过程效率测试附代码
    




大数据量分页存储过程效率测试附代码

执行示例:exec proc_paged_2part_selectMax 'tb_testTable','ID,userName,userPWD,userEmail',10,100000,'ID',0,null,'ID',0

这种测试只在单机进行,并且没有在实际开发WEB项目中分页测试,测试项也比较单一,所以不够全面系统,但从其效率相比上,我们可以在数据库分页算法上进行有效的控制。



MSSQL
6
0
    (请您对文章做出评价)   

相关文章:

  • 2022-02-13
  • 2022-12-23
猜你喜欢
  • 2021-12-21
相关资源
相似解决方案