溫馨提示×

溫馨提示×

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

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

Oracle中怎么優(yōu)化復(fù)雜視圖

發(fā)布時間:2021-08-04 14:19:46 來源:億速云 閱讀:299 作者:Leah 欄目:數(shù)據(jù)庫

Oracle中怎么優(yōu)化復(fù)雜視圖,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

優(yōu)化方法

如果可以將這類視圖中常用的謂詞條件直接寫入視圖內(nèi),且寫成動態(tài)的,同時將常用查詢列按選擇性由大至小創(chuàng)建組合索引,則優(yōu)化器可以盡可能地使用索引直接獲取數(shù)據(jù),再進行過濾計算等操作,以此達到優(yōu)化目的。具體操作步驟如下:

(1)創(chuàng)建一個輔助包,并創(chuàng)建兩個函數(shù),實際情況中若同時傳入多個條件可自行擴充包中方法,每一個條件需要增加兩個方法。

(2)修改視圖定義,將謂詞條件寫入至基表條件中,并重新編譯視圖。

性能對比

下面通過具體的例子來說明如何對復(fù)雜視圖進行優(yōu)化。

通過將原視圖和優(yōu)化后視圖進行對比,看出優(yōu)化后視圖的執(zhí)行計劃成本由349降到86,優(yōu)化效果非常明顯。表中紅框部分內(nèi)容需特別引起注意。

優(yōu)化前視圖查詢的執(zhí)行計劃是全表掃描,執(zhí)行效率低下。優(yōu)化后視圖查詢的執(zhí)行計劃是索引范圍掃描。通過索引直接取出需要訪問的數(shù)據(jù),再進行后續(xù)處理,性能較優(yōu)化前有大幅提升。

需要指出的是,該方法只在訪問視圖中少量數(shù)據(jù)時效果明顯,如果訪問數(shù)據(jù)量大,該方法不適用。

表4.1 優(yōu)化前視圖定義、查詢語句及執(zhí)行計劃

Oracle中怎么優(yōu)化復(fù)雜視圖

表4.2 優(yōu)化后視圖定義、查詢語句及執(zhí)行計劃

Oracle中怎么優(yōu)化復(fù)雜視圖

通過以上分析對比可以清晰地看出,優(yōu)化后的視圖可以使用索引且性能有了顯著提高??偨Y(jié)起來,對于復(fù)雜查詢優(yōu)化思路應(yīng)該是:如果視圖中訪問的是少量數(shù)據(jù),則盡可能通過索引先取出需要處理的數(shù)據(jù),然后再進行后續(xù)處理。此方法適用的前提是,復(fù)雜視圖使用各種常規(guī)優(yōu)化方法(如增加索引,添加提示符等)都無效時。

但是,這一方法也有一定弊端,那就是與其它優(yōu)化方法相比,此法需要做的前期工作較多,如建立輔助包,對原視圖進行修改和重新編譯。另外還需測試優(yōu)化前后查詢結(jié)果是否一致,查詢前需調(diào)用輔助包,將查詢條件傳入視圖中,不過優(yōu)化后的視圖是不需要加查詢條件的。

看完上述內(nèi)容,你們掌握Oracle中怎么優(yōu)化復(fù)雜視圖的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

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

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI