日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

pu代表什么意思 pua代表什么意思( 五 )


select l_orderkey, l_partkey, l_quantityfrom mview6where l_orderkey between 1000 and 1500and l_shipdate = l_commitdateJoin 派生
如果存在 Outer Join,視圖和查詢 Join 關(guān)系不一致,可以嘗試?yán)?Join 派生性,從物化視圖中的聯(lián)接重新計(jì)算查詢中的聯(lián)接 。例如,能從物化視圖中的 left Outer Join 的結(jié)果里,計(jì)算 Inner Join,Anti Join 的結(jié)果 , Inner Join 又能進(jìn)一步計(jì)算 Semi Join,這樣就能使用物化視圖過濾某些行來回答不同具有不同 Join 關(guān)系的查詢 。
Join 派生可以擴(kuò)展改寫的范圍 , 允許優(yōu)化器將基于物化視圖的改寫與解關(guān)聯(lián)的規(guī)則規(guī)則結(jié)合 , 改寫帶有 IN,EXISTS 等的查詢 , 也可以避免其他優(yōu)化規(guī)則對(duì) Join 的調(diào)整,例如 EliminateOuterJoin 和 PredicatePushDown 可能會(huì)將 outer join 優(yōu)化成 inner join 。
Union 改寫
物化視圖只包含一部分查詢所需的數(shù)據(jù),也可以用于查詢改寫 。在很多場(chǎng)景下 , 物化視圖不會(huì)也無法存儲(chǔ)全部的數(shù)據(jù) 。
一個(gè)典型的情況是,數(shù)據(jù)在不斷的寫入,但是寫入只發(fā)生在最近一段時(shí)間內(nèi) 。在持續(xù)刷新的表上構(gòu)建全量物化視圖,這可能導(dǎo)致因?yàn)閿?shù)據(jù)插入視圖頻繁刷新,產(chǎn)生高昂的刷新成本,甚至視圖因?yàn)槌掷m(xù)刷新而完全不可用 。更好的做法是構(gòu)建一個(gè) T+1 條件刷新的物化視圖,存儲(chǔ)不變的數(shù)據(jù),可以降低刷新成本 。
另一種常見的情況是,數(shù)據(jù)倉庫存儲(chǔ)全量的數(shù)據(jù) , 而查詢集中在最近幾個(gè)月的數(shù)據(jù) , 構(gòu)建全部數(shù)據(jù)的物化視圖成本過于高昂,物化視圖只構(gòu)建最近幾個(gè)月數(shù)據(jù),也能改寫絕大多數(shù)查詢 。

Union 改寫會(huì)嘗試使用視圖回答部分查詢,減少查詢中實(shí)時(shí)計(jì)算的數(shù)據(jù)量 。Union 改寫可以進(jìn)一步應(yīng)用 Aggregation 改寫,支持使用物化視圖部分?jǐn)?shù)據(jù)回答聚合查詢 。
例如查詢
select l_orderkey, l_partkey, l_quantityfrom lineitemwhere l_orderkey l_orderkey > 500 and l_orderkey <= 1500and l_shipdate = l_commitdate物化視圖
create materialized view mview8enable query rewriteasselect l_orderkey, l_partkey, l_quantityfrom lineitemwhere l_orderkey > 1000and l_shipdate = l_commitdate改寫結(jié)果
select l_orderkey, l_partkey, l_quantityfrom lineitemwhere l_orderkey > 500 and l_orderkey <= 1000and l_shipdate = l_commitdateunionselect o.shippriorityfrom mview8where l_orderkey > 1000 and l_orderkey <= 1500查詢改寫的實(shí)現(xiàn)視圖改寫通常有三種查詢改寫的實(shí)現(xiàn)方式:
基于語法的改寫基于規(guī)則的改寫基于結(jié)構(gòu)的改寫基于語法的改寫
文本匹配或者語法匹配是最簡(jiǎn)單的改寫方法,將查詢的文本與物化視圖的文本或語法樹進(jìn)行比較,完全匹配可以進(jìn)行改寫 。這種改寫只能匹配完整的查詢語句或子語句,細(xì)微的變化就會(huì)導(dǎo)致查詢無法改寫,適用的范圍很小 。基于語法的改寫雖然簡(jiǎn)單 , 但是效率很高 , 改寫的成本可以忽略不計(jì) 。
基于規(guī)則的改寫
基于規(guī)則的改寫和其他優(yōu)化器規(guī)則相同,針對(duì)不同 Pattern 的查詢和視圖編寫不同的規(guī)則,尋找等價(jià)的替代關(guān)系樹 。
最簡(jiǎn)單的一條規(guī)則就是直接比較子查詢和視圖的計(jì)劃 , 如果相同就能改寫 。高級(jí)的改寫規(guī)則不需要物化視圖等同于被替換的計(jì)劃 , 會(huì)嘗試計(jì)算補(bǔ)償謂詞 , 構(gòu)建等價(jià)查詢表達(dá)式 。例如 Join 改寫,比較 Join 查詢的子表達(dá)式是否和視圖 Join 的某個(gè)子表達(dá)相同或者能否從中計(jì)算出來,每一個(gè)Join子表達(dá)式都存在映射關(guān)系,最后檢查補(bǔ)償表達(dá)式能否從視圖中計(jì)算得到 。
基于規(guī)則的改寫可以實(shí)現(xiàn)大量重寫,實(shí)現(xiàn)也比較簡(jiǎn)單 , 改寫匹配速度快,但是也存在局限性 。這種改寫依賴轉(zhuǎn)換規(guī)則來尋找等價(jià)關(guān)系 , 因此需要窮舉所有可能的轉(zhuǎn)換關(guān)系來實(shí)現(xiàn)復(fù)雜視圖的重寫 。一些復(fù)雜的視圖不可能窮舉所有的等價(jià)關(guān)系,例如存在很多的 Join 聯(lián)接或者復(fù)雜的 Project 關(guān)系,基于規(guī)則的改寫適用的范圍取決于規(guī)則的數(shù)量 。

推薦閱讀