溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Oracle分頁(yè)查詢方法是什么

發(fā)布時(shí)間:2021-07-16 00:34:23 來源:億速云 閱讀:432 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要講解了“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è)查詢格式:

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ù)查詢效果。

Oracle分頁(yè)查詢方法是什么

我們自己寫了一個(gè)自定義的查詢分頁(yè)方法,根據(jù)每次修改頁(yè)數(shù),來計(jì)算vi_startrow和vi_endrow兩個(gè)開始行于結(jié)束行。然后通過這兩個(gè)值進(jìn)行sql語(yǔ)句的拼接。

通過上面執(zhí)行完后,我們可以看到拼接后的SQL語(yǔ)句,如下圖:

Oracle分頁(yè)查詢方法是什么

然后我們把輸出的語(yǔ)句在新的窗口中打開查詢后并運(yùn)行一下結(jié)果

Oracle分頁(yè)查詢方法是什么

Oracle分頁(yè)查詢方法是什么

可以看出來我們通過分頁(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)注!

向AI問一下細(xì)節(jié)

免責(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)容。

AI