乙個非常好的oracle的分頁sql語句
select * from (select my_table.*, rownum as my_rownum from ( select yhbh, yhmc from yysf_tb_yonghxx order by yhbh) my_table where rownum <20 ) where my_rownum>=10
其它幾種分頁實現:
1.根據rowid來分
select * from t_xiaoxi where rowid in(select rid from (select rownum rn,rid from(select rowid rid,cid from
t_xiaoxi order by cid desc) where rownum<10000) where rn>9980) order by cid desc;
執行時間0.03秒
2.按分析函式來分
select * from (select t.*,row_number() over(order by cid desc) rk from t_xiaoxi t) where rk<10000 and rk>9980;
執行時間1.01秒
3.按rownum來分
select * from(select t.*,rownum rn from(select * from t_xiaoxi order by cid desc) t where rownum<10000) where
rn>9980;執行時間0.1秒
其中t_xiaoxi為表名稱,cid為表的關鍵字段,取按cid降序排序後的第9981-9999條記錄,t_xiaoxi表有70000多條記錄
個人感覺1的效率最好,3次之,2最差
oracle如何返回指定行數之間的查詢結果
如何返回指定行數之間的查詢結果,以實現web記錄分頁,在oracle中有許多的方法,這裡僅僅列出了4種,希望能對大家有所幫助,大家可以根據不同需要選擇下面的script
1)select ... where rownum < 50 minus select ... where rownum < 30
這個方法因為用到了minus操作符,所以速度會受影響。
2) select results.* from
( select t2.*, rownum rownumber from
( select t.* from mv_table t where order by col1) t2) results
where results.rownumber between 30 and 50 order by col1
這個方法是從乙個論壇上看到的,沒有親自測試過
3) 定義cursor x, 2.fetch x a,b,c; loop ...... end loop;
其中用兩個迴圈變數和乙個flag變數,分別表示,當前的記錄數,屬於第幾頁的, 及第一頁面。
ps;
j:=to_number(kafyf);
i:=1;
open cx;
loop fetch cx into col1,col2,col3,col4,col5,col6;
if cx%notfound then exit; end if;
if i>=j then
htp.tablerowopen;
htp.tabledata(col1);
htp.tabledata(col2);
htp.tabledata(col4);
htp.tabledata(col5);
htp.tabledata(col6);
htp.tabledata(col3);
htp.tablerowclose;
i:=i+1;
if i=j+10 then l:=1; exit; end if;
else i:=i+1;
end if;
end loop;
close x;
該方法是名叫『淼』的網友寫的script,他用到了oracle web2kit中的owa_util package。
4)how can one page forward and backwards through a table?
externalize rownum by implementing queries like this:
select ...
from (select rownum rnum, ... from ...)
where rnum between :low and :high and rownum <(:high :low + 1);
oracle 幾種 分頁語句
1.根據rowid來分 select from t xiaoxi where rowid in select rid from select rownum rn,rid from select rowid rid,cid from t xiaoxi order by cid desc where r...
詳解Oracle的幾種分頁查詢語句
分頁查詢格式 select from select a.rownum rn from select from table name a where rownum 40 where rn 21 其中最內層的查詢select from table name表示不進行翻頁的原始查詢語句。rownum 40...
詳解Oracle的幾種分頁查詢語句
2009 04 09 13 14 佚名 51cto 字型大小 t t 本文將介紹oracle的分頁查詢語句,看過本文後,大家基本上可以按照本文給出的格式來進行套用。不同的格式具備不同的執行效率。分頁查詢格式 select from select a.rownum rn from select fro...