您好,登錄后才能下訂單哦!
這篇文章主要講解了“Oracle分頁(yè)查詢方法是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Oracle分頁(yè)查詢方法是什么”吧!
前言
前面我們介紹Oracle的并行查詢,本來是想用并行查詢來解決獲取所有數(shù)據(jù)的方法,結(jié)果自己測(cè)試后發(fā)現(xiàn)并沒有達(dá)到自己想要的效果,所以還是要準(zhǔn)備利用分頁(yè)進(jìn)行查詢了。
分頁(yè)查詢
在Oracle中,并沒有想MySql里面的Limit的方法進(jìn)行過濾,所以要實(shí)現(xiàn)分頁(yè)查詢要麻煩一些,需要你用原表進(jìn)行排序后再通過rownum來時(shí)行分頁(yè)的處理。
Oracle分頁(yè)查詢語(yǔ)句基本上可以按照本文給出的格式來進(jìn)行套用。
Oracle分分頁(yè)查詢格式:
其中最內(nèi)層的查詢SELECT * FROM TABLE_NAME表示不進(jìn)行翻頁(yè)的原始查詢語(yǔ)句。ROWNUM <= 40和RN >= 21控制分頁(yè)查詢的每頁(yè)的范圍。
上面給出的這個(gè)Oracle分分頁(yè)查詢語(yǔ)句,在大多數(shù)情況擁有較高的效率。分頁(yè)的目的就是控制輸出結(jié)果集大小,將結(jié)果盡快的返回。在上面的分頁(yè)查詢語(yǔ)句中,這種考慮主要體現(xiàn)在WHERE ROWNUM <= 40這句上。
代碼實(shí)現(xiàn)
我們還是用數(shù)據(jù)庫(kù)的tskuplu的表,這個(gè)表里有2W4千多數(shù)據(jù),我們可以考慮設(shè)置一個(gè)頁(yè)數(shù),一個(gè)每頁(yè)的最多行數(shù)來分多數(shù)查詢效果。
我們自己寫了一個(gè)自定義的查詢分頁(yè)方法,根據(jù)每次修改頁(yè)數(shù),來計(jì)算vi_startrow和vi_endrow兩個(gè)開始行于結(jié)束行。然后通過這兩個(gè)值進(jìn)行sql語(yǔ)句的拼接。
通過上面執(zhí)行完后,我們可以看到拼接后的SQL語(yǔ)句,如下圖:
然后我們把輸出的語(yǔ)句在新的窗口中打開查詢后并運(yùn)行一下結(jié)果
可以看出來我們通過分頁(yè)查詢后,可以一段一段的時(shí)行輸出了,查詢的耗時(shí)我們也能接受。
最后貼上寫的那段語(yǔ)句:
declare vi_page integer; --頁(yè)數(shù)
vi_rows integer; --每頁(yè)行數(shù)
vi_startrow integer; --起始行
vi_endrow integer; --結(jié)束行
vs_sSql varchar2(8000);
begin
--設(shè)置頁(yè)數(shù)和每頁(yè)行數(shù)
vi_page:=2;
vi_rows:=1000;
--計(jì)算起始行
vi_startrow:=(vi_page-1)*vi_rows+1;
--計(jì)算結(jié)束行
vi_endrow:=vi_page*vi_rows;
vs_sSql:='select * from (select rownum as rowno, t.* from (select * from tskuplu order by pluid) t
where rownum<= '||to_char(vi_endrow)||') tb_plu
where tb_plu.rowno>='||to_char(vi_startrow);
dbms_output.put_line(vs_sSql);
end;
感謝各位的閱讀,以上就是“Oracle分頁(yè)查詢方法是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Oracle分頁(yè)查詢方法是什么這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。