分页查询语句

前面几项简单分页查询语句适用于普通数据库

MSSQL可以使用存储过程,ORACLE可使用强大的查询语句(有空再补上了)


1.初始思路(性能最差的)

select top 10 * from table where id not in (select top 5000 id from table)

2.进一步改造

select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段 

3.继续优化

select top 10 * from people where id>(select max(id) from(select top 5000id from people order by id)) 

4.再再优化

 select * from (SELECT top 10 * FROM (select top 5000 * from people )order by id desc ) order by id ; 


5.MSSQL2005-2008

declare @PageNumber [int]=2 --第几页
declare @PageSize [int]=5 --每页大小
declare @START_ID [int] 
declare @END_ID [int] 
SET @START_ID = convert(varchar(50),(@PageNumber - 1) * @PageSize + 1)
SET @END_ID = convert(varchar(50),@PageNumber * @PageSize)

 SELECT *   FROM (SELECT ROW_NUMBER() OVER(ORDER BY [UserID]) AS rownum, 
		 [UserID],[RealName]
		  FROM [dbo].[UserInfo]  where Userid>1 ) AS D
	   Where rownum >= @START_ID AND  rownum <= @END_ID   ORDER BY [UserID]


 


 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值