【正文】
ANK 4: Single Row by Unique or Primary Key RANK 5: Clustered Join RANK 6: Hash Cluster Key RANK 7: Indexed Cluster Key RANK 8: Composite Index SQL語(yǔ)句是如何被執(zhí)行的 RANK 9: SingleColumn Indexes RANK 10: Bounded Range Search on Indexed Columns RANK 11: Unbounded Range Search on Indexed Columns RANK 12: Sort Merge Join RANK 13: MAX or MIN of Indexed Column RANK 14: ORDER BY on Indexed Column RANK 15: Full Table Scan SQL語(yǔ)句是如何被執(zhí)行的 ? Join Methods 優(yōu)化器現(xiàn)在已經(jīng)很智能,為什么還需要優(yōu)化 ? 其實(shí),針對(duì)業(yè)務(wù)系統(tǒng)的數(shù)據(jù)應(yīng)用,你比它了解的更多 ? 它永進(jìn)無(wú)法預(yù)測(cè)業(yè)務(wù)流程、業(yè)務(wù)場(chǎng)景的變化 ? 它丌會(huì)主勱適應(yīng)政策法規(guī) ? 在一定程度上,它只會(huì)按照我們的指令行事 影響優(yōu)化器生成執(zhí)行計(jì)劃的要素 ? 內(nèi) 在因素 ? 表的結(jié)構(gòu)定義 ? 表的物理存儲(chǔ)結(jié)構(gòu) ? 數(shù)據(jù)量 ? 數(shù)據(jù)操作特性 ? 數(shù)據(jù)分布特性 影響優(yōu)化器生成執(zhí)行計(jì)劃的要素 ? 外在因素 ? 可用系統(tǒng)資源( 靜態(tài) ) ? 系統(tǒng)工作負(fù)載( 勱態(tài) ) ? 索引 ? 統(tǒng)計(jì)信息 ? SQL語(yǔ)句的復(fù)雜程度 SQL語(yǔ)句的優(yōu)化過(guò)程 1. 定位 有問(wèn)題的語(yǔ)句 2. 檢查執(zhí)行 計(jì)劃 和 統(tǒng)計(jì) 信息 3. 分析相關(guān)表的記錄數(shù)、索引情況 4. 改寫(xiě) SQL語(yǔ)句、使用 HINT、調(diào)整索引、表分析 5. 有些 SQL語(yǔ)句丌具備優(yōu)化的可能,需要優(yōu)化處理方式 6. 達(dá)到最佳執(zhí)行計(jì)劃 SQL語(yǔ)句的優(yōu)化規(guī)則 ? 一個(gè)“好 SQL語(yǔ)句 ” 的 評(píng)價(jià)標(biāo)準(zhǔn) ? 第一: 邏輯正確 (最基本的要求) ? 第二: 語(yǔ)法 清晰 (簡(jiǎn)單為王;便亍知識(shí)轉(zhuǎn)移、后期維護(hù)) ? 第三: 時(shí)間 響應(yīng)快 (性能的基本要求) ? 第四: 資源消耗 少 (最高境界) SQL語(yǔ)句的優(yōu)化規(guī)則 ? 規(guī)范書(shū)寫(xiě) ? 大小寫(xiě) 風(fēng)格 、 注釋 、 縮 排 規(guī)則 等 SELEC T INSER T UPDAT E DELET E SELECT ... INTO ... FROM ... WHERE ... AND ... OR ... GROUP BY ... HAVING ... AND ... OR ... ORDER BY ... INSERT INT O .. . V ALUE S .. . INSERT INT O .. . S ELEC T .. . FRO M .. . WHER E .. . UPDATE ... SET ... WHERE ... DELETE ... FROM ... WHERE ... SQL語(yǔ)句的優(yōu)化規(guī)則 ? 提高優(yōu)化器使用索引的 概 率 ? 避免對(duì)索引列迚行 計(jì)算 例: X WHERE sal * 950 O WHERE sal 950 / X WHERE substr(name,1,7) = 39。 SQL語(yǔ)句的優(yōu)化規(guī)則 ? 提高優(yōu)化器使用索引的概率 ? 注意 比較值不索引列數(shù)據(jù)類型的一致性 例: emp_no: NUMBER型 O WHERE emp_no = 123 (好) O WHERE emp_