優(yōu)化器2_實現(xiàn)_第1頁
優(yōu)化器2_實現(xiàn)_第2頁
優(yōu)化器2_實現(xiàn)_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、查詢優(yōu)化實現(xiàn)從整個優(yōu)化的角度或者范圍上看,查詢優(yōu)化分為邏輯優(yōu)化和物理優(yōu)化。邏輯優(yōu)化:主要依據(jù)關系代數(shù)的等價變換做邏輯變換。如:查詢重寫等物理優(yōu)化(代價評估):根據(jù)數(shù)據(jù)讀取,表連接方式,表連接順序,排序等技術對查詢進行優(yōu)化。如:查詢算法優(yōu)化等Ø 邏輯優(yōu)化如何找出SQL語句等價的變化形式,使得SQL的執(zhí)行效率更高效。優(yōu)化思路包括:(1) 子句局部優(yōu)化(謂詞重寫,where條件優(yōu)化等)(2) 子句間關聯(lián)優(yōu)化(外連消除,子查詢優(yōu)化等)(3) 局部與整體優(yōu)化(OR并集規(guī)則變換UNION操作)(4) 形式變化優(yōu)化(嵌套子句消除)(5) 語義優(yōu)化(6) 其他優(yōu)化Ø 邏輯優(yōu)化的依據(jù)是關系代

2、數(shù)和啟發(fā)式規(guī)則啟發(fā)式規(guī)則:ü 一定能帶來優(yōu)化效果的:ü 優(yōu)先做選擇和投影(連接條件在查詢樹上下推)ü 子查詢的消除ü 嵌套連接的消除ü 外連的消除ü 連接的消除ü 使用等價謂詞重寫ü 語義優(yōu)化ü 裁剪冗余,最小化查詢塊查詢重寫規(guī)則:范圍:SPJ查詢(select,project,JOIN)S對應的是限制條件(column op(>,<,=) constant),優(yōu)化方式選擇性下推,盡量減少連接操作前的元組個數(shù)(節(jié)約IO)。P對應的是目標的列對象,優(yōu)化方式是投影操作下推,減少連接操作前的列數(shù)(一

3、條元組的列數(shù)減少,節(jié)約內(nèi)存)。J對應的是連接條件,優(yōu)化表的連接順序。等價謂詞重寫:對于一些全表掃描的謂詞來說如果存在索引列可以轉(zhuǎn)換相關謂詞進行索引掃描,提升查詢效率。LIKE規(guī)則該LIKE為其他謂詞更好的利用索引查詢。如:name like Abc%重寫為name >= Abcand name <= Abd又如:name like abc重寫為:name = abc條件化簡:主要針對where ,having和on條件化簡。sql語句沒有group by時候?qū)aving和where條件合并去除冗余的括號如:(a and b)and (c and d)化簡為a and b and

4、c and d常量傳遞如:col1 =col2 and col2=3 化簡為col1=3 and col2=3消除死碼如:where (0 >1 and s1 =5)這個條件化簡為恒為假外連消除:由于外連過程中左右子樹不能互換這種性質(zhì)性質(zhì)了優(yōu)化器選擇連接順序時交換表連接順序的優(yōu)化方式。ü 左連接轉(zhuǎn)內(nèi)連接ü 全外連接轉(zhuǎn)左外連接ü 右連接轉(zhuǎn)左連接嵌套消除:只有內(nèi)連的嵌套查詢可以去掉括號,交換表的連接順序。如:select * from A join (B join C on B.b1 = C.c1) on A.a1 = B.b1 where A.a1 >

5、1;轉(zhuǎn)換為select * from A join B join C on B.b1 = C.c1 on A.a1 = B.b1 where A.a1 > 1;如果有左右連接,表的連接順序不可以改變不能進行嵌套消除優(yōu)化。子查詢優(yōu)化:子查詢可以出現(xiàn)的位置:ü 目標列(標量子查詢)ü FROM子句(非相關子查詢)ü WHERE子句ü JOIN/ON子句ü GROUP BY子句ü ORDER BY子句ü 子查詢分類:ü 非相關子查詢ü 相關子查詢子查詢優(yōu)化思路:子查詢合并select * from t1

6、where a < 10 and exists (select a2 from t2 where t2.a2 < 5 and t2.b2 =1) or exists (select a2 from t2 where t2.a2 < 5 and t2.b2 = 2);經(jīng)過優(yōu)化后,我們可以將兩個子查詢合并如下:select * from t1 where a < 10 and exists (select a2 from t2 where t2.a2 < 5 and ( t2.b2 =1 or t2.b2 = 2 );子查詢展開(子查詢上拉):實質(zhì)是把某些子查詢重寫為等價的多表連接操作。select * from t1,(select * from t2 where t2.a2 > 10) v_t2 where t1.a1 < 10 and v_t2.a2 < 20;優(yōu)化后:select

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論