----------------分頁實現方式---------------------
方法一:直接通過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的無狀態性,每一次提交都是當作乙...