freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

sql優(yōu)化策略ppt課件(已修改)

2025-05-17 18:25 本頁面
 

【正文】 提綱 ? SQL優(yōu)化 ? 腳本的幾個注意點 SQL解析執(zhí)行 SQL執(zhí)行計劃 ? 共享 sql語句 – Oracle將用戶提交的 SQL語句進行解析,然后將執(zhí)行計劃放在內(nèi)存 (系統(tǒng)全局區(qū) SGA)中,這樣可以減少對相同 sql語句的重復(fù)解析。 判斷過程: 對文本串計算 hashed值比較; 語句所涉及的對象比較。 ? Rowid的概念 – Rowid是訪問 表中的給定的行 的 最快的訪問方法,通過 ROWID可以直接定位到相應(yīng)的數(shù)據(jù)塊上,然后將其讀到內(nèi)存 。 (索引也是通過 rowid快速訪問數(shù)據(jù) ) ? Recursive SQL概念 – 為了執(zhí)行用戶發(fā)出的一個 sql語句, Oracle必須執(zhí)行一些額外的語句 。比如當(dāng)我們發(fā)送一個 DDL請求時, oracle會隱含的執(zhí)行 RecursiveSql來修改相關(guān)的數(shù)據(jù)字典信息 ? Row Source(行源 ) – 相當(dāng)于 SQL操作的中間結(jié)果,比如 上一操作返回的符合條件的行的集合 (可以是表的全部行數(shù)據(jù)或者部分行數(shù)據(jù)) ? Driving Table(驅(qū)動表 ) – 即前面說的基礎(chǔ)表,我們應(yīng)該盡量使用在 應(yīng)用查詢的限制條件后,返回較少行源的表作為驅(qū)動表 。 SQL執(zhí)行計劃 ? Probed Table(被探查表 ) – 即被驅(qū)動的內(nèi)層表,一般該表較大并且相應(yīng)被驅(qū)動關(guān)聯(lián)的列上應(yīng)該有索引。 ? 訪問路徑 (方法 ) (accesspath) – 優(yōu)化器在形成執(zhí)行計劃時需要做的一個重要選擇是如何從數(shù)據(jù)庫查詢出需要的數(shù)據(jù)。對于 SQL語句存取的任何表中的任何行,可能存在許多存取路徑 (存取方法 ),通過它們可以定位和查詢出需要的數(shù)據(jù) ,優(yōu)化器會選擇最優(yōu)路徑。(數(shù)據(jù)庫塊是最小的 IO單位,即使只讀一行數(shù)據(jù),也會將整塊的數(shù)據(jù)讀到內(nèi)存中) ? 1)全表掃描( FullTableScans, FTS) – Oracle會順序分配給表的每個數(shù)據(jù)塊,直到最高水平線( HWM)。 – 使用 FTS的前提條件:在較大的表上不建議使用全表掃描,除非取出數(shù)據(jù)的比較多,超過總量的 5%10%,或你想使用并行查詢功能時。 ? 2)通過 ROWID的表存?。?TableAccessbyROWID或 rowidlookup) ? 3)索引掃描( IndexScan或 indexlookup) – 一次 I/O只能讀取一個數(shù)據(jù)塊 ? 表之間的連接 – 表之間的連接順序?qū)τ诓樵兊男视蟹浅4蟮挠绊?,一般以較小的 rowsource來驅(qū)動較大的rowsource. – 嵌套循環(huán) (NestedLoops, NL) – 哈希連接 (HashJoin, HJ) SQL優(yōu)化原則 ? 選擇最有效率的表名順序 (只在基于規(guī)則的優(yōu)化器中有效 ) – ORACLE的解析器按照從右到左的順序處理 FROM子句中的表名, FROM子句中寫在最后的表 (基礎(chǔ) 表 )將被最先處理,在 FROM子句中包含多個表的情況下, 盡量 選擇記錄條數(shù)最少的表作為基礎(chǔ)表。 ? WHERE子句中的連接順序 – ORACLE采用自下而上的順序解析 WHERE子句,根據(jù)這個原理,表之間的連接 應(yīng)該 寫在其他WHERE條件之前,那些可以過濾掉最大數(shù)量記錄的條件 應(yīng)該 寫 在 WHERE子句的末尾。 ? SELECT子句中避免使用 39。*‘ – Oracle在解析的時候會通過查詢數(shù)據(jù)字典,將‘ *’轉(zhuǎn)換成所有的列,所以盡量只寫我們所需要的字段列。 ? 多表連接時,盡量 使用表的別名 (Alias) – 當(dāng)在 SQL語句中連接多個表時,請使用表的別名并把別名前綴于每個 Column上。這樣一來,就可以減少解析的時間并減少那些由 Column歧義引起的語法錯誤。 ? 用 EXISTS替代 IN、用 NOT EXISTS替代 NOT IN
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1