sqlserver 也可以基于伪列分页!

与oracle一样  sqlserver 2005后出现 借助函数 ROW_NUMBER()伪列,可以简单的通过子查询实现数据分页
Orcale 分页可以看一下这一篇 简单搞一下 Oracle 存储过程动态SQL之获取查询分页!

先简单试一下

 
  
SELECT * FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY id desc)AS Row,
* from test
  as temp where Row between 1 and 10

2011052518064446.png

看来还行......

继续改写一下:

 
  
declare
@v_index
int ,
@v_size
int
begin
set @v_index = 1 ;
set @v_size = 10 ;
SELECT
* FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY id desc)AS Row,
* from test
)
as temp where Row
between (@v_index
- 1 ) * @v_size + 1  
        and (@v_index - 1 ) * @v_size + @v_size
end;

用with 语句再进行改写一下,模仿别人写成存储过程

 
  
create procedure proc_get_test_list
(
@p_index
int ,
@p_size
int
)
as
begin

with temptb
as
(
select row_number() over (order by id desc)
as row, * from test
)

select
* from temptb where row between

(@p_index
- 1 ) * @p_size + 1 and (@p_index - 1 ) * @p_size + @p_size

end

传说这样写 可以提升语句效率

2011052518200672.png

普通查询语句在1000条的条件下,响应时间几乎忽略!

测试一下存储过程:

2011052518214923.png

应该算不分上下吧...... 后面再继续研究!

转载于:https://www.cnblogs.com/darjuan/archive/2011/05/25/2057167.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值