成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

干貨|Oracle復(fù)雜視圖優(yōu)化案例分析

數(shù)據(jù)庫 Oracle
在使用Oracle數(shù)據(jù)庫過程中,視圖是作為數(shù)據(jù)庫對象存在的,因而,在創(chuàng)建了這樣的視圖后,就可以通過工具或者數(shù)據(jù)字典來查看視圖的相關(guān)信息。視圖來源于表,所有對視圖數(shù)據(jù)的修改最終都會被反映到視圖的基表中,這些修改必須服從基表的完整性約束,并同樣會觸發(fā)定義在基表上的觸發(fā)器。

在使用Oracle數(shù)據(jù)庫過程中,視圖是作為數(shù)據(jù)庫對象存在的,因而,在創(chuàng)建了這樣的視圖后,就可以通過工具或者數(shù)據(jù)字典來查看視圖的相關(guān)信息。視圖來源于表,所有對視圖數(shù)據(jù)的修改最終都會被反映到視圖的基表中,這些修改必須服從基表的完整性約束,并同樣會觸發(fā)定義在基表上的觸發(fā)器。

Oracle的視圖分為簡單視圖和復(fù)雜視圖兩種,簡單視圖就是從單一的表中獲取數(shù)據(jù),其中不包含函數(shù)和數(shù)據(jù)組等,復(fù)雜視圖是指在視圖定義中包括了聚合函數(shù)、分析函數(shù)、用戶自定義函數(shù)、多表關(guān)聯(lián)、子查詢等。此類視圖在某些特定條件下,優(yōu)化器無法將視圖外的謂詞條件推送至視圖內(nèi)的基表上,即使在基表的列上創(chuàng)建索引也無法使用索引。本文將對該類視圖提出一種優(yōu)化方案,可以顯著提高該類視圖的性能,而且表的數(shù)據(jù)量越大,查詢數(shù)據(jù)越少,性能提高越明顯。下面,本文在實(shí)操基礎(chǔ)上,對影響謂詞推入因素及如何優(yōu)化進(jìn)行簡要闡釋。

影響謂詞推入因素

本文的實(shí)驗(yàn)環(huán)境是Oracle 11.2.0.4版本的數(shù)據(jù)庫,筆者通過反復(fù)測試發(fā)現(xiàn),若查詢語句中存在以下兩種情況,則優(yōu)化器會阻止視圖謂詞條件推入至基表上:一是視圖中的查詢中包括了ROWNUM偽列;二是視圖中含有分析函數(shù)(如ROW_NUMBER() OVER(…))。若遇其它影響謂詞推入的情況優(yōu)化方法與此方法類似。另外,Oracle 11.2.0.4之前的版本可能存在其它影響謂詞推入的情況。

優(yōu)化方法

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

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

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

性能對比

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

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

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

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

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

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

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

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

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

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

責(zé)任編輯:龐桂玉 來源: 九次方大數(shù)據(jù)
相關(guān)推薦

2020-01-16 18:30:07

技術(shù)SQL優(yōu)化

2009-03-04 09:06:56

優(yōu)化sqlOracle

2010-04-19 13:43:38

Oracle分析函數(shù)

2010-04-12 10:53:07

Oracle SQL

2010-04-26 14:32:21

Oracle SQL

2009-05-19 14:34:52

Oraclehash優(yōu)化

2011-06-27 16:26:39

Oracle優(yōu)化器RBOCBO

2009-11-17 15:59:25

Oracle物化視圖

2010-11-16 10:42:45

Oracle創(chuàng)建視圖

2009-12-30 13:24:33

2014-06-06 10:47:52

Android視圖大小測量案例

2015-07-17 16:23:14

MySQL優(yōu)化

2009-11-17 16:47:09

Oracle物化視圖日

2009-05-06 11:09:10

Oracle物化視圖數(shù)據(jù)庫

2010-04-19 10:20:19

Oracle參數(shù)

2011-08-01 18:42:40

分區(qū)維度物化視圖

2010-04-19 11:21:39

Oracle視圖

2019-06-20 11:20:25

sql優(yōu)化數(shù)據(jù)庫

2009-08-28 17:51:40

iPhone多視圖開發(fā)

2009-03-18 10:01:15

OracleIASNoClassDefF
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产男女精品 | 久久人人网 | 日韩一二区在线观看 | 91精品国产91久久综合桃花 | 在线播放国产一区二区三区 | 亚洲成人精品久久久 | av乱码 | av福利网| 欧美一区二区三区在线 | 国产高清在线观看 | 在线观看中文字幕亚洲 | 日韩中文一区二区三区 | 超碰超碰 | 久久国产精品-国产精品 | 夜夜爽99久久国产综合精品女不卡 | 亚洲精品视 | 国产成人av一区二区三区 | 精品欧美激情精品一区 | 精品久久久久久久 | 粉嫩国产精品一区二区在线观看 | 国产精品免费在线 | 日韩在线视频一区二区三区 | 欧美一区不卡 | 91直接看 | 亚洲视频免费在线观看 | 欧美狠狠操 | 中文字幕视频在线 | 女人牲交视频一级毛片 | 午夜影院在线观看免费 | 亚洲精品一区二区冲田杏梨 | 亚洲欧美日韩精品久久亚洲区 | 久久久涩| 日韩精品一区二区三区视频播放 | 国产蜜臀97一区二区三区 | 精品久久国产 | 欧美日韩国产一区二区三区 | 国产免费一区二区三区免费视频 | 电影午夜精品一区二区三区 | 中文字幕视频在线看5 | 玖操| 波多野结衣电影一区 |