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

正文內(nèi)容

oracle執(zhí)行計(jì)劃和sql調(diào)優(yōu)知識(shí)概述-在線瀏覽

2025-03-13 18:49本頁(yè)面
  

【正文】 ID訪問(wèn):通過(guò)指定的 ROWID的方式在表中選定一個(gè)單獨(dú)的記錄;是訪問(wèn)記錄的最快方式; 表之間的連接 ? row source(表 )之間的連接順序?qū)τ诓樵兊男视蟹浅4蟮挠绊?。一般是在將表讀入內(nèi)存時(shí),應(yīng)用 where子句中對(duì)該表的限制條件。 ? 目的:生成最快的,消耗資源最少的執(zhí)行計(jì)劃。 優(yōu)化器模式 ? Rule 模式:完全基于數(shù)據(jù)字典生成執(zhí)行計(jì)劃;最古老、比較穩(wěn)定; ? Choose 模式:默認(rèn)的優(yōu)化器模式。 ? 在會(huì)話層使用 alter session set optimizer_goal= rule/choose/all_rows/first_rows。 ? 對(duì)沒(méi)有索引的字段查詢; ? 帶有 like條件的查詢: where xxx like ‘ %x’; ? 帶有 not equals條件的查詢: , !=, not in等(除非字段分布不平衡,而且存在字段矩形圖) ? 內(nèi)置函數(shù)使索引無(wú)效: substr(), to_char()等; ? 使用 all_rows提示; ? 使用 parallel 提示; 基于 RBO 調(diào)整 設(shè)置 RBO模式的方法 ? optimizer_mode = rule/choose。 ? 在 SQL中添加提示 /*+ rule */ ? 設(shè)置 choose模式時(shí)候,將根據(jù)是否存在表或索引的統(tǒng)計(jì)資料來(lái)決定選擇 RBO或CBO; RBO特性 ? 總是使用索引(不識(shí)別位圖索引或基于函數(shù)的索引) ? 總是從驅(qū)動(dòng)表開(kāi)始 ? 只有在不可避免的情況下,才使用全表掃描 ? 索引選擇的隨機(jī)特性 基于 RBO的調(diào)整原則 ? 驅(qū)動(dòng)表的設(shè)置:在 RBO中,驅(qū)動(dòng)表是from子句的最后一個(gè)表;驅(qū)動(dòng)表應(yīng)該是返回記錄最少的那個(gè)表; ? Where子句設(shè)置:限制性最強(qiáng)的布爾表達(dá)式放在最底層; ? 添加基于成本的提示,來(lái)獲得更快的執(zhí)行計(jì)劃; 基于 CBO 調(diào)整 設(shè)置 CBO模式的方法 ? optimizer_mode = all_rows/first_rows/choose。 ? 在 SQL中添加提示 /*+ hint */ ? 設(shè)置 choose模式時(shí)候,將根據(jù)是否存在表或索引的統(tǒng)計(jì)資料來(lái)決定選擇 RBO或 CBO; CBO 特性 ? 前提條件:存在表和索引的統(tǒng)計(jì)資料;使用analyze table 和 analyze index 命令從表或索引中收集統(tǒng)計(jì)資料(表的記錄平均長(zhǎng)度,記錄數(shù)等);如果沒(méi)有現(xiàn)存的統(tǒng)計(jì)資料,將在 sql運(yùn)行時(shí)收集資料,會(huì)大大降低性能; ? 影響 CBO執(zhí)行計(jì)劃成本評(píng)估的初始化參數(shù)較多( optimizer_search_limit,optimizer_max_permutations,optimizer_index_caching,hash_area_size,hash_join_enable,hash_multiblock_io_count,star_transformation_enable,optimizer_index_cost_adj等) 調(diào)整表連接 表連接方法 ? 嵌套循環(huán)連接( nested loop join):一個(gè)小的內(nèi)部表和一個(gè)外部表。 ? 使用 in子句的非關(guān)聯(lián)子查詢可以轉(zhuǎn)換為標(biāo)準(zhǔn)連接操作以及使用 select distinct來(lái)刪除重復(fù)的記錄; ? 使用 exists子句的關(guān)聯(lián)子查詢可以轉(zhuǎn)換為標(biāo)準(zhǔn)連接,但子查詢最好只能返回一個(gè)記錄; 子查詢調(diào)整原則(續(xù)) ? 非關(guān)聯(lián)子查詢使用 not exists子句是沒(méi)有意義的; ? 使用 not in子句的非關(guān)聯(lián)子查詢可以轉(zhuǎn) sql minus子句,性能相對(duì)會(huì)高一些; ? 使用 not in子句的關(guān)聯(lián)子查詢,可以使用帶有 select distinct子句的外部連接操作改寫; 各種子查詢技術(shù)總結(jié) 標(biāo)準(zhǔn)子查詢 反連接子查詢 in exists Not in Not exists 關(guān)聯(lián)子查詢 多余的 自動(dòng)轉(zhuǎn)換為嵌套的循環(huán)連接 可以重寫為select distinct 外部連接 可以重寫為 select distinct 外部連接 非關(guān)聯(lián)子查詢 自動(dòng)轉(zhuǎn)換為嵌套的循環(huán)連接 不適合 可以重寫為minus操作符的嵌套循環(huán)連接 不適合 例子:使用 in子句的非關(guān)聯(lián)子查詢可以使用標(biāo)準(zhǔn)連接操作以及使用 select distinct來(lái)刪除重復(fù)的記錄; 原 sql語(yǔ)句: Select ename From emp Where empno in (select empno from bad_credit where bad_credit_datesysdate365)。 使用提示進(jìn)行調(diào)整 提示簡(jiǎn)介 ? 歷史:第一次引入是在 oracle7,用來(lái)彌補(bǔ) CBO的缺陷, oracle8i中工作得較好; ? 目的:用來(lái)更改 SQL語(yǔ)句 的執(zhí)行計(jì)劃; ? 格式: select(update,delete) /*+ hints */ … 或 select (update,delete) + hint… 使用提示遵循的原則 ? 注意檢查語(yǔ)法: select /*+ hint */ …, /*和 +之間不能有空格,必須緊跟在 select之后,否則無(wú)效 ? 使用表別名:如果指定了表別名,就不能使用表名稱;
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1