2016 08 16 Oracle分頁功能實現

2021-07-16 18:16:49 字數 3141 閱讀 2712

每天積累一點點,感覺自己又進步了 

--1:無order by排序的寫法。(效率最高)

--(經過測試,此方法成本最低,只巢狀一層,速度最快!即使查詢的資料量再大,也幾乎不受影響,速度依然!)

select

*from

(select

rownum

as rowno, t

.*from

emp t

where

hire_date

between

to_date

('20060501'

, 'yyyymmdd'

)and

to_date

('20060731'

, 'yyyymmdd'

)and

rownum

<=

20)table_alias

where

table_alias

.rowno

>=

10;--2:有order by排序的寫法。(效率最高)

--(經過測試,此方法隨著查詢範圍的擴大,速度也會越來越慢哦!)

select

*from

(select

tt.*,

rownum

as rowno

from

(  select t

.*from

emp t

where

hire_date

between

to_date

('20060501'

, 'yyyymmdd'

)and

to_date

('20060731'

, 'yyyymmdd'

)order

by create_time

desc,

emp_no

) tt

where

rownum

<=

20)table_alias

where

table_alias

.rowno

>=

10;--3:無order by排序的寫法。(建議使用方法1代替)

--(此方法隨著查詢資料量的擴張,速度會越來越慢哦!)

select*

from

(select

rownum

as rowno, t

.* from

k_task t

where

flight_date

between

to_date

('20060501'

, 'yyyymmdd')

andto_date

('20060731'

, 'yyyymmdd'

))table_alias

where

table_alias

.rowno

<=

20 and

table_alias

.rowno

>=

10;--table_alias.rowno between 10 and 100;

--4:有order by排序的寫法.(建議使用方法2代替)

--(此方法隨著查詢範圍的擴大,速度會越來越慢哦!)

select*

from

(select

tt.*,

rownum

asrowno

from

(  select *

from

k_task t

where

flight_date

between

to_date

('20060501'

, 'yyyymmdd')

andto_date

('20060531'

, 'yyyymmdd')

order

by fact_up_time

, flight_no

) tt

)table_alias

where

table_alias

.rowno

between

10 and

20;--5另類語法。(有order by寫法)

--(語法風格與傳統的sql語法不同,不方便閱讀與理解,為規範與統一標準,不推薦使用。)

with

partdataas

( select

rownum

as rowno

, tt.*

from

(  select *

from

k_task t

where

flight_date

between

to_date

('20060501'

, 'yyyymmdd')

andto_date

('20060531'

, 'yyyymmdd')

order

by fact_up_time

, flight_no)tt

where

rownum

<=

20)select*

from

partdata

where

rowno

>=

10;--6另類語法 。(無order by寫法)

with

partdataas

( select

rownum

as rowno, t

.* from

k_task t

where

flight_date

between

to_date

('20060501'

, 'yyyymmdd')

andto_date

('20060531'

, 'yyyymmdd')

andrownum

<=

20)select*

from

partdata

where

rowno

>=

10;

oracle中自動建立分表

最近由於工作需要,研究了下oracle中分割槽表和自動建立分割槽表 主要用到的關鍵字 partition 建立分割槽表必備 interval 自動建立分割槽表必備 好像只有oracle10g 和oracle11g 中有該關鍵字 例子如下 create table t1 id varchar2 50 ...

oracle分庫分表原理 題庫分庫分表架構方案

方案 專案背景 在現在題庫架構下,針對新購買的1300w多道資料進行整合,不影響現有功能。由於資料量偏多,需要進行資料的切分 目標場景 相容舊的功能 對1300多w資料進行分庫分表 需要對舊的資料進行整合 老師端選題組卷 可以根據 學段 學科 知識點 難度 題型 來篩選 學生端根據老師端所選題目獲取...

oracle 求百分比

oracle求百分比 例子 求name為dead的記錄所佔百分比 select tt.retrieve retrievedrate,tc.公司名稱 companyname,tc.部門名稱 deptname,tc.使用者名稱 username,tc.nodename nodename,tc.proce...