mssqlserver分页2种方法,很多人都选择了最差的一种

                                                                                   mssqlserver优化分页2种方法详细比较

1,测试条件: 写一个JDBC链接数据库的方法,执行查询;
                     测试数据 1000 条;
                           采用存储过程procedure
2,存储过程procedure:
               -------------------> 分页-1代码
create procedure pro_page
  @pagecont int,
  @pageon int
as
 select top(@pagecont) id,zifu from test_1 where id not in (select top(@pagecont*@pageon) id from test_1);
go
exec pro_page 10,4;




           ------------------------> 分页-2代码
create procedure pro_pages
  @pagecont int,
  @pageon int
as
select top(@pagecont) * from test_1
where (id > (select MAX(id) from (select top(@pagecont*@pageon) id from test_1 order by id) AS T)) order by ID
go
exec pro_pages 10,4;


3,测试结果:
              分页-2经过测试无论显示第几页的数据效率都是一样在1-2s就显示出来。
               分页-1经过测试当分页值越大就越慢,在得到第一页需要1-2s,如果显示第99页是大约1M才显示出来,如果数据更多瓶颈就更严重。
               可以看出2种分页效率差距之大,但是很多人在分页时都用的方法-1。


4,纯sql语句分页:

A.   select top(10) *  from test_1 where id not in (select top(10*?) id from test_1);


B.  select top(10) *  from test_1  where (id > (select MAX(id) from (select top(10*?) id from test_1 order by id) AS T)) order by ID");


     执行效率B>A,  当A分页数越大时效率就越差,B无论页数是多少效率都一样


注意:测试数据数量要足够多,100页以上。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sencerity

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值