中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle分頁查詢的示例分析

發布時間:2021-07-15 10:41:15 來源:億速云 閱讀:144 作者:小新 欄目:數據庫

這篇文章主要介紹Oracle分頁查詢的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Oracle分頁查詢的實例詳解

1.Oracle分頁查詢:

SELECT * FROM 
( SELECT A.*, ROWNUM RN FROM 
    (SELECT * FROM tab) A 
    WHERE ROWNUM <= 40 ) 
       WHERE RN >= 21;

這個分頁比下面的執行時間少,效率高。 

2.

select * from 
    (select c.*,rownum rn from tab c) where rn between 21 and 40

 對比這兩種寫法,絕大多數的情況下,第一個查詢的效率比第二個高得多。這是由于CBO優化模式下,Oracle可以將外層的查詢條件推到內層查詢中,以提高內層查詢的執行效率。對于第一個查詢語句,第二層的查詢條件WHERE ROWNUM <= 40就可以被Oracle推入到內層查詢中,這樣Oracle查詢的結果一旦超過了ROWNUM限制條件,就終止查詢將結果返回了。
而第二個查詢語句,由于查詢條件BETWEEN 21 AND 40是存在于查詢的第三層,而Oracle無法將第三層的查詢條件推到最內層(即使推到最內層也沒有意義,因為最內層查詢不知道RN代表什么)。】因此,對于第二個查詢語句,
Oracle最內層返回給中間層的是所有滿足條件的數據,而中間層返回給最外層的也是所有數據。數據的過濾在最外層完成,
顯然這個效率要比第一個查詢低得多。

上面分析的查詢不僅僅是針對單表的簡單查詢,對于最內層查詢是復雜的多表聯合查詢或最內層查詢包含排序的情況一樣有效。

3.下面簡單討論一下多表聯合的情況。對于最常見的等值表連接查詢,CBO一般可能會采用兩種連接方式

NESTED LOOP和HASH JOIN(MERGE JOIN效率比HASH JOIN效率低,一般CBO不會考慮)。
在這里,由于使用了分頁,因此指定了一個返回的最大記錄數,NESTED LOOP在返回記錄數超過最大值時
可以馬上停止并將結果返回給中間層,而HASH JOIN必須處理完所有結果集(MERGE JOIN也是)。
那么在大部分的情況下,對于Oracle分頁查詢選擇NESTED LOOP作為查詢的連接方法具有較高的效率
(分頁查詢的時候絕大部分的情況是查詢前幾頁的數據,越靠后面的頁數訪問幾率越小)。

SELECT /*+FIRST_ROWS*/ * FROM     ---hint 提示,優化查詢
( SELECT A.*, ROWNUM RN FROM 
    (SELECT * FROM tab) A 
    WHERE ROWNUM <= 400 ) 
       WHERE RN >= 380

以上是“Oracle分頁查詢的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嫩江县| 云林县| 鹤庆县| 黔江区| 页游| 万盛区| 安岳县| 鹿邑县| 商水县| 平和县| 德令哈市| 开江县| 库车县| 牡丹江市| 思茅市| 靖宇县| 喀喇沁旗| 安西县| 大庆市| 马尔康县| 长葛市| 凤城市| 沾益县| 池州市| 关岭| 平乡县| 遵义县| 嘉峪关市| 玉田县| 伊宁县| 马龙县| 光泽县| 洮南市| 扶余县| 吉木萨尔县| 新邵县| 蒙城县| 富源县| 海兴县| 扶沟县| 河西区|