分頁實現方式

2021-08-26 20:09:42 字數 1122 閱讀 3345

----------------分頁實現方式---------------------

方法一:直接通過rownum分頁:

select * from (

select a.*,rownum rn from

(select * from product a where company_id=? order by status) a

where rownum<=20)

where rn>10;

資料訪問開銷=索引io+索引全部記錄結果對應的表資料io

方法二:

select * from

(select pfc.*,row_number() over(partition by ruleid order by posttime desc) cn from pfscr650535 pfc where postfloor=0) t

where t.cn<11

該語句優化如下:

select b.* from

(select ruleid,row_number() over(partition by ruleid order by posttime desc) cn from pfscr650535 pfc ) a,pfscr650535 b

where a.cn<11 and a.ruleid=b.ruleid and b.postfloor=0;

方法三:採用rowid分頁語法

優化原理是通過純索引找出分頁記錄的rowid,再通過rowid回表返回資料,要求內層查詢和排序欄位全在索引裡。

create index myindex on product(company_id,status);

select b.* from (

select * from (

select a.*,rownum rn from

(select rowid rid,status from product a where company_id=? order by status) a

where rownum<=20)

where rn>10) a, product b

where a.rid=b.rowid;

資料訪問開銷=索引io+索引分頁結果對應的表資料io

實現分頁的方式

2000 首先獲得所有的記錄集合的儲存過程 create procedure dbo p getordernumber asselectcount orderid fromorders orders為表 return 分頁的儲存過程 create procedure dbo p getpagedor...

常見的分頁的實現方式 簡介

mysql select from tablename limit m,n m從 開始,n資料的條數 postgresql select from tablename limit n offset m oracle select from select s.rownum rn from select...

分頁實現的三種方式

分頁問題是乙個非常普遍的問題,開發者幾乎都會遇到,這裡不討論具體如何分頁,說明一下web方式下分頁的原理。首先是查詢獲得乙個結果集 表現為查詢資料庫獲得的結果 如果結果比較多我們一般都不會一下顯示所有的資料,那麼就會用分頁的方式來顯示某些資料 比如20條 因為http的無狀態性,每一次提交都是當作乙...