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

正文內(nèi)容

oracle執(zhí)行計劃和sql調(diào)優(yōu)(編輯修改稿)

2024-10-24 21:25 本頁面
 

【文章內(nèi)容簡介】 s子查詢,因為它將調(diào)用相關(guān)聯(lián)的子查詢; 半連接子查詢可以重新書寫成標(biāo)準(zhǔn)等連接,用select distinct子句刪除重復(fù)的記錄;,表連接調(diào)整原則(續(xù)),如果驅(qū)動表較小,可以完全裝入hash_area_size內(nèi)存中,使用散列連接(hash join)速度比嵌套循環(huán)連接(nested loop)快; 在兩個表非常大的情況下,經(jīng)常使用嵌套循環(huán)連接(nested loop); 生成大型結(jié)果集的查詢、不使用where子句的大表連接或表中無可用索引的查詢,經(jīng)常使用排序合并連接(srot merge); 對于多個小的維表和一個大的事實表的情況下(數(shù)據(jù)倉庫),經(jīng)常使用星型連接(star);,不同表連接方法的相對速度,星型連接,嵌套循環(huán)連接,散列連接,排序合并連接,連接速度,連接表中記錄的數(shù)目,少,多,慢,快,調(diào)整SQL子查詢,子查詢類型,標(biāo)準(zhǔn)子查詢:in 和 exists; 反連接子查詢:not in 和 not exists; 關(guān)聯(lián)子查詢:指在子查詢內(nèi)部引用外部數(shù)據(jù)表;…from table1 a where … (select…from table2 b Where a.f1 = b.f1…);對于外部數(shù)據(jù)集的每一條記錄,都將重新執(zhí)行一次內(nèi)部子查詢; 非關(guān)聯(lián)子查詢:指在子查詢內(nèi)部不會引用外部的數(shù)據(jù)表;…from table1 a where … (select …from table2 b …);內(nèi)部子查詢只執(zhí)行一次;,子查詢調(diào)整原則,只要可能的話,盡可能的避免使用子查詢,而用標(biāo)準(zhǔn)的連接操作來代替,這樣可以使用提示來更改執(zhí)行計劃; 先考慮子查詢的合法性,再考慮進行改寫; 使用一個關(guān)聯(lián)子查詢時,in與exists子句的子查詢的執(zhí)行計劃基本相同; 在外部查詢返回相對較少的記錄時,關(guān)聯(lián)子查詢比非關(guān)聯(lián)子查詢執(zhí)行得更快;,子查詢調(diào)整原則(續(xù)),在內(nèi)部子查詢只有少量的記錄時,非關(guān)聯(lián)子查詢比關(guān)聯(lián)子查詢執(zhí)行得更快; 關(guān)聯(lián)子查詢使用in子句是多余的;而非關(guān)聯(lián)子查詢使用exists子句是不恰當(dāng)?shù)摹?使用in子句的非關(guān)聯(lián)子查詢可以轉(zhuǎn)換為標(biāo)準(zhǔn)連接操作以及使用select distinct來刪除重復(fù)的記錄; 使用exists子句的關(guān)聯(lián)子查詢可以轉(zhuǎn)換為標(biāo)準(zhǔn)連接,但子查詢最好只能返回一個記錄;,子查詢調(diào)整原則(續(xù)),非關(guān)聯(lián)子查詢使用not exists子句是沒有意義的; 使用not in子句的非關(guān)聯(lián)子查詢可以轉(zhuǎn)sql minus子句,性能相對會高一些; 使用not in子句的關(guān)聯(lián)子查詢,可以使用帶有select distinct子句的外部連接操作改寫;,各種子查詢技術(shù)總結(jié),例子:使用in子句的非關(guān)聯(lián)子查詢可以使用標(biāo)準(zhǔn)連接操作以及使用select distinct來刪除重復(fù)的記錄;,原sql語句: Select ename From emp Where empno in (select empno from bad_credit where bad_credit_datesysdate365)。,改寫后: Select distinct /* + rule */ ename From emp,bad_credit Where a.empno=b.empno and bad_credit_datesysdate365。,使用提示進行調(diào)整,提示簡介,歷史:第一次引入是在oracle7,用來彌補CBO的缺陷,oracle8i中工作得較好; 目的:用來更改SQL語句 的執(zhí)行計劃; 格式:select(update,delete) /*+ hints */ … 或 select (update,delete) + hint…,使用提示遵循的原則,注意檢查語法:select /*+ hint */ …, /*和+之間不能有空格,必須緊跟在select之后,否則無效 使用表別名:如果指定了表別名,就不能使用表名稱; 不能使用模式名稱:如果指定了模式所有者,那么提示將被忽略; 檢驗提示:如果指定不可用的訪問路徑,如:first_rows優(yōu)化器模式與order by子句不兼容,那么提示將被忽略;,使提示無效的條件,Cluster,hash:與非簇表一起使用; Merge_aj,push_subq,Hash_aj:不存在子查詢; Index:指定的索引不存在; Index_combine:不存在位圖索引; Parellel:調(diào)用的不是全表掃描計劃; Star:事實表中存在不恰當(dāng)索引; Use_concat:在where子句中不存在多個索引; Use_nl:表中不存在索引;,提示之一:優(yōu)化器提示,Rule:使oracle為查詢應(yīng)用基于規(guī)則的優(yōu)化模式。在懷疑CBO使用了非優(yōu)化的執(zhí)行計劃時,使用rule提示;它將忽略表和索引的統(tǒng)計資料;/*+ rule */ All_rows:基于成本的優(yōu)化方法。目的是提供最佳的吞吐量和最小的資源消耗。傾向于全表掃描,不適用于OLTP系統(tǒng);依賴于表和索引的統(tǒng)計資料;/*+ all_rows */ First_rows:基于成本的優(yōu)化方法。目的是提供最快的反映時間。依賴于表和索引的統(tǒng)計資料;/*+ first_rows */,提示之二:表連接提示,Use_hash:對指定的表執(zhí)行一個散列連接;如果有一個表較小,通??煊谇短籽h(huán)連接;在兩個表非常大的情況下,散列連接經(jīng)常與并行查詢連接結(jié)合使用;select /*+ use_hash(a,b) parallel(a,4) parallel(b,4) */。 Use_merge:強制執(zhí)行一個排序合并操作;對表執(zhí)行全表掃描;通常與并行查詢結(jié)合使用;最適用于生成大型結(jié)果集的查詢、不使用where子句的大表連接或表中無可用索引的查詢;select /*+ use_merge(a,b) parallel(a,4) parallel(b,4) */,表連接
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1