分頁查詢語句

前面幾項簡單分頁查詢語句適用於普通數據庫

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]


 


 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章