版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
ORACLE執(zhí)行計劃和SQL調(diào)優(yōu)內(nèi)容安排第一部分:背景知識第二部分:SQL調(diào)優(yōu)第三部分:工具介紹第一部分背景知識執(zhí)行計劃的相關(guān)概念Rowid的概念rowid是一個偽列,既然是偽列,那么這個列就不是用戶定義,而是系統(tǒng)自己給加上的。對每個表都有一個rowid的偽列,但是表中并不物理存儲ROWID列的值。不過你可以像使用其它列那樣使用它,但是不能刪除改列,也不能對該列的值進行修改、插入。一旦一行數(shù)據(jù)插入數(shù)據(jù)庫,則rowid在該行的生命周期內(nèi)是唯一的,即即使該行產(chǎn)生行遷移,行的rowid也不會改變。RecursiveSQL概念有時為了執(zhí)行用戶發(fā)出的一個sql語句,Oracle必須執(zhí)行一些額外的語句,我們將這些額外的語句稱之為‘recursivecalls’或‘recursiveSQLstatements’。如當一個DDL語句發(fā)出后,ORACLE總是隱含的發(fā)出一些recursiveSQL語句,來修改數(shù)據(jù)字典信息,以便用戶可以成功的執(zhí)行該DDL語句。當需要的數(shù)據(jù)字典信息沒有在共享內(nèi)存中時,經(jīng)常會發(fā)生Recursivecalls,這些Recursivecalls會將數(shù)據(jù)字典信息從硬盤讀入內(nèi)存中。用戶不比關(guān)心這些recursiveSQL語句的執(zhí)行情況,在需要的時候,ORACLE會自動的在內(nèi)部執(zhí)行這些語句。當然DML語句也都可能引起recursiveSQL。簡單的說,我們可以將觸發(fā)器視為recursiveSQL。RowSourceandPredicateRowSource(行源):用在查詢中,由上一操作返回的符合條件的行的集合,即可以是表的全部行數(shù)據(jù)的集合;也可以是表的部分行數(shù)據(jù)的集合;也可以為對上2個rowsource進行連接操作(如join連接)后得到的行數(shù)據(jù)集合。Predicate(謂詞):一個查詢中的WHERE限制條件DrivingTableDrivingTable(驅(qū)動表):該表又稱為外層表(OUTERTABLE)。這個概念用于嵌套與HASH連接中。如果該rowsource返回較多的行數(shù)據(jù),則對所有的后續(xù)操作有負面影響。注意此處雖然翻譯為驅(qū)動表,但實際上翻譯為驅(qū)動行源(drivingrowsource)更為確切。一般說來,是應用查詢的限制條件后,返回較少行源的表作為驅(qū)動表,所以如果一個大表在WHERE條件有有限制條件(如等值限制),則該大表作為驅(qū)動表也是合適的,所以并不是只有較小的表可以作為驅(qū)動表,正確說法應該為應用查詢的限制條件后,返回較少行源的表作為驅(qū)動表。在執(zhí)行計劃中,應該為靠上的那個rowsource,后面會給出具體說明。ProbedTableProbedTable(被探查表):該表又稱為內(nèi)層表(INNERTABLE)。在我們從驅(qū)動表中得到具體一行的數(shù)據(jù)后,在該表中尋找符合連接條件的行。所以該表應當為大表(實際上應該為返回較大rowsource的表)且相應的列上應該有索引。組合索引(concatenatedindex)由多個列構(gòu)成的索引,如createindexidx_emponemp(col1,col2,col3,……),則我們稱idx_emp索引為組合索引。在組合索引中有一個重要的概念:引導列(leadingcolumn),在上面的例子中,col1列為引導列。當我們進行查詢時可以使用”wherecol1=?”,也可以使用”wherecol1=?andcol2=?”,這樣的限制條件都會使用索引,但是”wherecol2=?”查詢就不會使用該索引。所以限制條件中包含先導列時,該限制條件才會使用該組合索引??蛇x擇性(selectivity)比較一下列中唯一鍵的數(shù)量和表中的行數(shù),就可以判斷該列的可選擇性。如果該列的”唯一鍵的數(shù)量/表中的行數(shù)”的比值越接近1,則該列的可選擇性越高,該列就越適合創(chuàng)建索引,同樣索引的可選擇性也越高。在可選擇性高的列上進行查詢時,返回的數(shù)據(jù)就較少,比較適合使用索引查詢。oracle訪問數(shù)據(jù)的的存取方法全表掃描(FullTableScans,FTS)通過ROWID的表存取取(TableAccessbyROWID)索引掃描(IndexScan))索引掃描(IndexScan))索引唯一掃描描(indexuniquescan)索引范圍掃描描(indexrangescan)索引引全全掃掃描描(indexfullscan)索引引快快速速掃掃描描(indexfastfullscan)表訪訪問問方方式式全表表掃掃描描::讀讀取取表表中中每每一一條條記記錄錄,,順順序序讀讀取??;;散列列獲獲取?。海菏故褂糜梅柼柹⑸⒘辛兄髦麈I鍵來來為為帶帶有有匹匹配配散散列列值值表表中中的的記記錄錄創(chuàng)創(chuàng)建建ROWID;;ROWID訪訪問問::通通過過指指定定的的ROWID的的方方式式在在表表中中選選定定一一個個單單獨獨的的記記錄錄;;是是訪訪問問記記錄錄的的最最快快方方式式;;表之之間間的的連連接接rowsource(表表)之之間間的的連連接接順順序序?qū)τ谟诓椴樵冊兊牡男事视杏蟹欠浅34蟠蟮牡挠坝绊戫?。。通通過過首首先先存存取取特特定定的的表表,,即即將將該該表表作作為為驅(qū)驅(qū)動動表表,,這這樣樣可可以以先先應應用用某某些些限限制制條條件件,,從從而而得得到到一一個個較較小小的的rowsource,,使使連連接接的的效效率率較較高高,,這這也也就就是是我我們們常常說說的的要要先先執(zhí)執(zhí)行行限限制制條條件件的的原原因因。。一一般般是是在在將將表表讀讀入入內(nèi)內(nèi)存存時時,,應應用用where子子句句中中對對該該表表的的限限制制條條件件。。SQL執(zhí)執(zhí)行的步驟驟解析:安全全性檢查,,語法檢查查;創(chuàng)建:評估估多個執(zhí)行行計劃,并并選擇一個個最優(yōu)的執(zhí)執(zhí)行計劃;;執(zhí)行:捆綁綁變量,執(zhí)執(zhí)行已經(jīng)創(chuàng)創(chuàng)建的執(zhí)行行計劃;獲?。韩@取取結(jié)果集,,進行轉(zhuǎn)換換,排序等等;索引訪問方方式索引范圍掃掃描:指從從索引中讀讀取多個rowid,是最常常見到的方方式;單個索引掃掃描:指從從索引中讀讀取一個單單獨的rowid;;降序索引范范圍掃描::指按降序序的方式從從索引中讀讀取多個rowid;導致排序的的操作Orderby子子句Groupby子子句Selectdistinct子子句Union或minus操作優(yōu)化器調(diào)用用sortmergejoin操操作創(chuàng)建索引SQL優(yōu)化化器概念:是一一個為所有有的sql語句創(chuàng)建建執(zhí)行計劃劃的工具。。目的:生成成最快的,,消耗資源源最少的執(zhí)執(zhí)行計劃。。兩種優(yōu)化器器:基于規(guī)規(guī)則的優(yōu)化化器(RBO),基基于成本的的優(yōu)化器((CBO))。優(yōu)化器模式式Rule模模式:完完全基于數(shù)數(shù)據(jù)字典生生成執(zhí)行計計劃;最古古老、比較較穩(wěn)定;Choose模式式:默認的的優(yōu)化器模模式。根據(jù)據(jù)統(tǒng)計數(shù)據(jù)據(jù)的存在與與否確定調(diào)調(diào)用哪一個個優(yōu)化器;;First_rows模式式:基于成成本的優(yōu)化化器模式,,以最快的的速度返回回記錄;All_rows模模式:基基于成本的的優(yōu)化器模模式,確保??傮w時間間最短,使使用的資源源最??;設置優(yōu)化器器模式的方方法Init.ora參參數(shù)optimizer_mode=rule/choose/all_rows/first_rows;在會話層使使用altersessionsetoptimizer_goal=rule/choose/all_rows/first_rows;在SQL中中添加提示示/*+rule/all_rows/first_rows*/設置choose模模式時候,,將根據(jù)是是否存在表表或索引的的統(tǒng)計資料料來決定選選擇RBO或CBO;第二部分SQL調(diào)調(diào)整SQL調(diào)調(diào)整的目標標去掉不必要要的大表全全表掃描;;緩存小小表全全表掃掃描;;盡量使使用主主機變變量代代替直直接量量,減減少SQL語句句的解解析時時間;;優(yōu)化索索引的的使用用;優(yōu)化表表連接接方法法;優(yōu)化子子查詢詢;常見可可能導導致全全表掃掃描的的操作作使用null條條件的的查詢詢:wherexxxisnull;對沒有有索引引的字字段查查詢;;帶有l(wèi)ike條條件的的查詢詢:wherexxxlike‘‘%x’’;帶有notequals條條件的的查詢詢:<>,!=,notin等((除非非字段段分布布不平平衡,,而且且存在在字段段矩形形圖))內(nèi)置置函函數(shù)數(shù)使使索索引引無無效效::substr(),,to_char()等等;;使用用all_rows提提示示;;使用用parallel提提示示;;基于于RBO調(diào)調(diào)整整設置置RBO模模式式的的方方法法Init.ora參參數(shù)數(shù)optimizer_mode=rule/choose;在會會話話層層使使用用altersessionsetoptimizer_goal=rule/choose;在SQL中中添添加加提提示示/*+rule*/設置置choose模模式式時時候候,,將將根根據(jù)據(jù)是是否否存存在在表表或或索索引引的的統(tǒng)統(tǒng)計計資資料料來來決決定定選選擇擇RBO或或CBO;;RBO特性總是使用索引引(不識別位位圖索引或基基于函數(shù)的索索引)總是從驅(qū)動表表開始只有在不可避避免的情況下下,才使用全全表掃描索引選擇的隨隨機特性基于RBO的的調(diào)整原則驅(qū)動表的設置置:在RBO中,驅(qū)動表表是from子句的最后后一個表;驅(qū)驅(qū)動表應該是是返回記錄最最少的那個表表;Where子子句設置:限限制性最強的的布爾表達式式放在最底層層;添加基于成本本的提示,來來獲得更快的的執(zhí)行計劃;;基于CBO調(diào)整設置CBO模模式的方法Init.ora參數(shù)optimizer_mode=all_rows/first_rows/choose;在會話層使用用altersessionsetoptimizer_goal=all_rows/first_rows/choose;在SQL中添添加提示/*+hint*/設置choose模式時時候,將根據(jù)據(jù)是否存在表表或索引的統(tǒng)統(tǒng)計資料來決決定選擇RBO或CBO;CBO特特性性前提提條條件件::存存在在表表和和索索引引的的統(tǒng)統(tǒng)計計資資料料;;使使用用analyzetable和和analyzeindex命命令令從從表表或或索索引引中中收收集集統(tǒng)統(tǒng)計計資資料料((表表的的記記錄錄平平均均長長度度,,記記錄錄數(shù)數(shù)等等));;如如果果沒沒有有現(xiàn)現(xiàn)存存的的統(tǒng)統(tǒng)計計資資料料,,將將在在sql運運行行時時收收集集資資料料,,會會大大大大降降低低性性能能;;影響響CBO執(zhí)執(zhí)行行計計劃劃成成本本評評估估的的初初始始化化參參數(shù)數(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)連連接((nestedloopjoin)::一個個小的的內(nèi)部部表和和一個個外部部表。。比較較內(nèi)部部表的的每一一條記記錄和和外部部表的的每一一條記記錄,,返回回滿足足條件件的記記錄;;散列連連接((hashjoin)):為為較小小的表表在RAM創(chuàng)建建散列列表((可以以用來來從較較大的的那個個表讀讀取記記錄));排序合合并連連接((sortmergejoin)):使使用連連接字字段將將兩個個記錄錄集排排序然然后合合并;;星型連連接((starjoin)):幾幾個小小型表表(將將組成成虛擬擬表))和一一個大大型事事實表表,然然后進進行嵌嵌套循循環(huán)連連接;;表連接接類型型等連接接:標標準連連接;;…froma,bwherea.f1=b.f1;;oracle提供供nestedloop、、hashjoin、、sortmerge三種種連接接方式式;外部連連接:通通過在在where子子句的的等式式謂詞詞展覽覽館放放置一一個((+))來實實現(xiàn);;…froma,bwherea.f1=b.f1(+),將將包括括b表表中不不匹配配的字字段;;自連接::一個表表與自己己連接的的情況;;…fromempa,empbwherea.f1-b.f1=10……;經(jīng)常常調(diào)用nestedloop連接接;表連接類類型(續(xù)續(xù))反連接::指使用用包含notin或或notexists子子句的子子查詢進進行的連連接;默默認使用用嵌套循循環(huán)算法法;半連接::指在子子查詢中中使用in或exists子子句時進進行的操操作;表連接調(diào)調(diào)整原則則RBO只只能調(diào)用用nestedloop和和mergesort連接接;hashjoin和star連接接只能在在CBO中得到到;盡量不要要使用notin反反連接子子查詢,,把它替替換成標標準等連連接,用用外連接接和wherecolumnisnull子句刪刪除多余余的記錄錄;或者者盡量替替換成notexists子查詢詢,因為為它將調(diào)調(diào)用相關(guān)關(guān)聯(lián)的子子查詢;;半連接子子查詢可可以重新新書寫成成標準等等連接,,用selectdistinct子句句刪除重重復的記記錄;表連接調(diào)調(diào)整原則則(續(xù)))如果驅(qū)動動表較小小,可以以完全裝裝入hash_area_size內(nèi)存中中,使用用散列連連接(hashjoin))速度比比嵌套循循環(huán)連接接(nestedloop)快;;在兩個表表非常大大的情況況下,經(jīng)經(jīng)常使用用嵌套循循環(huán)連接接(nestedloop);生成大型型結(jié)果集集的查詢詢、不使使用where子句的的大表連連接或表表中無可可用索引引的查詢詢,經(jīng)常常使用排排序合并并連接((srotmerge);;對于多個個小的維維表和一一個大的的事實表表的情況況下(數(shù)數(shù)據(jù)倉庫庫),經(jīng)經(jīng)常使用用星型連連接(star);不同表連連接方法法的相對對速度星型連接接嵌套循環(huán)環(huán)連接散列連接接排序合并并連接連接速度度連接表中中記錄的的數(shù)目少多慢快調(diào)整SQL子查查詢子查詢類類型標準子查查詢:in和和exists;反連接子子查詢::notin和notexists;關(guān)聯(lián)子查查詢:指指在子查查詢內(nèi)部部引用外外部數(shù)據(jù)據(jù)表;……fromtable1awhere……(select……fromtable2bWherea.f1=b.f1…);對于于外部數(shù)數(shù)據(jù)集的的每一條條記錄,,都將重重新執(zhí)行行一次內(nèi)內(nèi)部子查查詢;非關(guān)聯(lián)子子查詢::指在子子查詢內(nèi)內(nèi)部不會會引用外外部的數(shù)數(shù)據(jù)表;;…fromtable1awhere……(select…fromtable2b…);內(nèi)部部子查詢詢只執(zhí)行行一次;;子查詢調(diào)調(diào)整原則則只要可能能的話,,盡可能能的避免免使用子子查詢,,而用標標準的連連接操作作來代替替,這樣樣可以使使用提示示來更改改執(zhí)行計計劃;先考慮子子查詢的的合法性性,再考考慮進行行改寫;;使用一個個關(guān)聯(lián)子子查詢時時,in與exists子句句的子查查詢的執(zhí)執(zhí)行計劃劃基本相相同;在外部查詢詢返回相對對較少的記記錄時,關(guān)關(guān)聯(lián)子查詢詢比非關(guān)聯(lián)聯(lián)子查詢執(zhí)執(zhí)行得更快快;子查詢調(diào)整整原則(續(xù)續(xù))在內(nèi)部子查查詢只有少少量的記錄錄時,非關(guān)關(guān)聯(lián)子查詢詢比關(guān)聯(lián)子子查詢執(zhí)行行得更快;;關(guān)聯(lián)子查詢詢使用in子句是多多余的;而而非關(guān)聯(lián)子子查詢使用用exists子句句是不恰當當?shù)?。使用in子子句的非關(guān)關(guān)聯(lián)子查詢詢可以轉(zhuǎn)換換為標準連連接操作以以及使用selectdistinct來刪刪除重復的的記錄;使用exists子子句的關(guān)聯(lián)聯(lián)子查詢可可以轉(zhuǎn)換為為標準連接接,但子查查詢最好只只能返回一一個記錄;;子查詢調(diào)整整原則(續(xù)續(xù))非關(guān)聯(lián)子查查詢使用notexists子句是是沒有意義義的;使用notin子子句的非關(guān)關(guān)聯(lián)子查詢詢可以轉(zhuǎn)sqlminus子句,性性能相對會會高一些;;使用notin子子句的關(guān)聯(lián)聯(lián)子查詢,,可以使用用帶有selectdistinct子句的的外部連接接操作改寫寫;各種子查詢詢技術(shù)總結(jié)結(jié)標準子查詢反連接子查詢inexistsNotinNotexists關(guān)聯(lián)子查詢多余的自動轉(zhuǎn)換為嵌套的循環(huán)連接可以重寫為selectdistinct外部連接可以重寫為selectdistinct外部連接非關(guān)聯(lián)子查詢自動轉(zhuǎn)換為嵌套的循環(huán)連接不適合可以重寫為minus操作符的嵌套循環(huán)連接不適合例子:使用用in子句句的非關(guān)聯(lián)聯(lián)子查詢可可以使用標標準連接操操作以及使使用selectdistinct來刪除重重復的記錄錄;原sql語句::SelectenameFromempWhereempnoin(selectempnofrombad_creditwherebad_credit_date>sysdate-365);改寫后::Selectdistinct/*+rule*/enameFromemp,bad_creditWherea.empno=b.empnoandbad_credit_date>sysdate-365;使用提示示進行調(diào)調(diào)整提示簡介介歷史:第第一次引引入是在在oracle7,用用來彌補補CBO的缺陷陷,oracle8i中工作作得較好好;目的:用用來更改改SQL語句的的執(zhí)行行計劃;;格式:select(update,delete)/*+hints*/…或或select(update,delete)--+hint…使用提示遵循循的原則注意檢查語法法:select/*+hint*/……,/*和+之間不不能有空格,,必須緊跟在在select之后,否否則無效使用表別名::如果指定了了表別名,就就不能使用表表名稱;不能使用模式式名稱:如果果指定了模式式所有者,那那么提示將被被忽略;檢驗提示:如如果指定不可可用的訪問路路徑,如:first_rows優(yōu)優(yōu)化器模式與與orderby子句句不兼容,那那么提示將被被忽略;使提示無效的的條件Cluster,hash:與非簇簇表一起使用用;Merge_aj,push_subq,Hash_aj:不存在子子查詢;Index::指定的索引引不存在;Index_combine:不存存在位圖索引引;Parellel:調(diào)用用的不是全表表掃描計劃;;Star:事事實表中存在在不恰當索引引;Use_concat::在where子句中不不存在多個索索引;Use_nl:表中不存存在索引;提示之一:優(yōu)優(yōu)化器提示Rule:使使oracle為查詢應應用基于規(guī)則則的優(yōu)化模式式。在懷疑CBO使用了了非優(yōu)化的執(zhí)執(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í)執(zhí)行全表掃描描;通常與并并行查詢結(jié)合合使用;最適適用于生成大大型結(jié)果集的的查詢、不使使用where子句的大大表連接或表表中無可用索索引的查詢;;select/*+use_merge(a,b)parallel(a,4)parallel(b,4)*/表連連接接提提示示((續(xù)續(xù)))Use_nl::強強制制對對目目標標表表執(zhí)執(zhí)行行嵌嵌套套循循環(huán)環(huán)連連接接;;對對包包含含兩兩個個大大表表的的連連接接通通常常最最快快;;可可以以不不用用更更改改from子子句句表表的的順順序序來來更更改改驅(qū)驅(qū)動動表表((使使用用CBO時時,,from子子句句的的第第一一個個表表));;是是CBO的的默默認認行行為為,,比比較較少少用用;;/*+use_nl(a)*/Star::強強制制使使用用星星型型查查詢詢計計劃劃;;查查詢詢中中至至少少存存在在三三個個表表((一一個個事事實實表表和和幾幾個個維維表表)),,而而且且事事實實表表((大大表表))存存在在恰恰當當?shù)牡乃魉饕ǎ?i可可以以使使用用位位圖圖索索引引));;/*+star*/提示示之之三三::反反連連接接提提示示反連連接接是是在在SQL語語句句中中包包含含notin或或notexist子子句句時時執(zhí)執(zhí)行行的的操操作作;;如如果果子子查查詢詢返返回回的的任任何何一一條條記記錄錄包包含含空空值值,,那那么么該該查查詢詢將將不不會會返返回回記記錄錄;;應應盡盡量量避避免免使使用用。。Hash_aj,Merge_aj::在notin子子查詢的字字段中不存存在空值的的時候,根根據(jù)連接的的類型,考考慮使用這這兩個提示示之一,可可以在很大大程度上提提高notin子子查詢的性性能;/*+hash_aj*/提示之四::索引提示示Index:優(yōu)化器器將使用指指定的索引引;如果沒沒有指定索索引,優(yōu)化化器將使用用表中最佳佳的索引;;/*+index(table,index)*/Index_join:要求求優(yōu)化器使使用索引連連接作為訪訪問路徑;;And_equal:如果表表擁有非唯唯一的單獨獨字段索引引,而且期期望使用多多個索引服服務于該查查詢,那么么使用該提提示將合并并這些索引引;至少兩兩個索引名名,但不能能超過五個個;/*+and_equal(table,index1,index2,……)*/索引引提提示示((續(xù)續(xù)))Index_asc::要要求求在在范范圍圍掃掃描描中中使使用用升升序序索索引引;;優(yōu)優(yōu)化化器器的的默默認認行行為為,,不不常常用用;;No_index::強制優(yōu)化化器忽略索索引得存在在。一般用用在并行全全表掃描性性能高于索索引范圍掃掃描性能的的情況下;;等同于full提提示;Index_desc:要求求在范圍掃掃描中使用用降序索引引;如在max())計算字段段的最大值值的時候使使用;/*+index_desc(table,index)*/索引提示((續(xù))Index_combine:強制使使用位圖索索引作為表表的訪問路路徑,對兩兩個位圖索索引執(zhí)行ROWID交集操作作。如果沒沒有指定索索引作參數(shù)數(shù),優(yōu)化器器將自動選選擇最佳的的位圖索引引;/*+table(bitmap1,bitmap2)*/Index_ffs:強制使使用快速完完全索引掃掃描;如果果大表中不不存在被查查詢字段的的高層索引引主鍵,比比如需要選選擇復合索索引中第二二個字段的的值時,那那么快速完完全索引掃掃描總是比比全表掃描描速度更快快;/*+index_ffs(table,comindex)*/索引提示((續(xù))Use_concat:要求求為查詢中中所有or條件使用用unionall執(zhí)行計計劃;一般般用在where子子句中存在在大量的or條件;;提示之五::并行提示示Parallel::要求表查查詢以并行行模式執(zhí)行行;一般用用在多個cpu的服服務器上,,與full提示一一起使用;;/*+full(table)parallel(table,8)*/Noparallel:不希希望對全表表掃描使用用并行機制制,如對小小表執(zhí)行的的全表掃描描時,使用用該提示;;提示之六::表訪問提提示Full::要求避開開索引,調(diào)調(diào)用全表掃掃描;讀取取表中大量量的數(shù)據(jù)塊塊時;與parallel一一起使用;;Hash::選擇散列列掃描來訪訪問指定的的簇表;/*+hash*/Cluster:選選擇簇掃描描來訪問指指定的簇表表;/*+cluster*/Nocache:指指定為keep池分分配的表數(shù)數(shù)據(jù)塊放置置在default池的中點點;很少使使用;表訪問提示示(續(xù))Ordered:要要求表按照照from子句指定定的順序進進行連接;;對連接多多于4個表表的查詢非非常有用,,可以節(jié)省省sql解解析的時間間;/*+ordered*/Ordered_predicates:用來來指定where子子句中布爾爾條件評估估的順序;;Push_subq:要求查查詢數(shù)據(jù)塊塊中的所有有子查詢在在執(zhí)行計劃劃中盡可能能早的被執(zhí)執(zhí)行;用在在子查詢相相對來說不不很昂貴,,并且在很很大程度上上降低返回回到記錄數(shù)數(shù);如果子子查詢使用用的是排序序合并連接接或調(diào)用遠遠程表,提提示將不起起作用;調(diào)整索引常見的索引引類型普通索引::最常見到到的索引,,createindexidx1ontable1(f1);復合索引::索引建立立在多個字字段上;createidx2ontable2(f1,f3);位圖索引::使用位圖圖的方式存存儲索引;;createbitmapindexidx3ontable3(f1);基于函數(shù)的的索引:createidx4ontable4(upper(f2));;索引無效內(nèi)置函數(shù)使使索引無效效:…fromtable1awheresubstr(a.f1,2,4)……,f1上的索引引無效;執(zhí)行一個數(shù)數(shù)學函數(shù)也也會使索引引無效:……fromtable1awherea.f1*3>1000,f1上的的索引無效效;不相等運算算符有時也也會使索引引無效:……fromtable1awherea.f1<>1000,導致致全表掃描描,f1上上的索引無無效;Where子句中中使用復合合函數(shù)的非非第一字
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)站內(nèi)容管理系統(tǒng)(CMS)建設協(xié)議
- 直播帶貨代運營協(xié)議
- 通訊設備代理銷售合同
- 工程砌墻更換項目經(jīng)理合同
- 工程審計業(yè)務協(xié)議書
- 小學勞動與技術(shù)學科評價方案
- 對外環(huán)境保護項目擔保協(xié)議
- 業(yè)務訴訟協(xié)議
- 書簽設計制作比賽方案
- 2025人教高中物理同步講義練習選擇性必修三第一章《分子動理論》綜合練習(含答案)
- 譯林版九年級上下冊英語單詞表(含音標)
- 漢語拼音字母表(A4打印版)
- 粗粒土大三軸試驗記錄
- 幼兒園大班語言《騎著恐龍去上學》課件
- 無償劃轉(zhuǎn)國有股權(quán)及資產(chǎn)的可行性論證報告(附無償劃轉(zhuǎn)協(xié)議)
- 醫(yī)療技術(shù)臨床應用動態(tài)評估制度
- 公務車司機年度工作總結(jié) 公務用車駕駛員個人總結(jié)
- 第二版《高中物理題型筆記》上冊
- 人教版四年級數(shù)學上冊練習八課件(含答案)
- 上海市大學生安全教育(2022級)學習通課后章節(jié)答案期末考試題庫2023年
- 蘇軾生平及創(chuàng)作整理
評論
0/150
提交評論