PowerDesigner使用經(jīng)驗(yàn)談(優(yōu)化庫表)_第1頁
PowerDesigner使用經(jīng)驗(yàn)談(優(yōu)化庫表)_第2頁
PowerDesigner使用經(jīng)驗(yàn)談(優(yōu)化庫表)_第3頁
PowerDesigner使用經(jīng)驗(yàn)談(優(yōu)化庫表)_第4頁
PowerDesigner使用經(jīng)驗(yàn)談(優(yōu)化庫表)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1圖1是+及建立((B3((圖23圖3圖4的55次5圖56和=和為(的的s7圖7為8P圖8(9圖9和圖&3、將子表的外鍵列的索引改為壓縮型3.1壓縮型索引的原理和用途在前面的例子中,由于一條訂單會對應(yīng)多條訂單條目,所以T_ORDER_ITEM的ORDER_ID字段總會出現(xiàn)重復(fù)的值,如:63在ORDER_ID列上創(chuàng)建一個普通未壓縮的B-Tree索引,則索引數(shù)據(jù)的物理上的存儲形式如下:圖ORDER_ID的重復(fù)值在索引塊中重復(fù)出現(xiàn),這樣不但增加了存儲空間的需求,而且因?yàn)椴樵儠r需要讀取更多的索引數(shù)據(jù)塊,所以查詢性能也會降低=。讓我們來看一下經(jīng)過壓縮后索引數(shù)據(jù)的存儲方式:圖壓縮型的索引消除了重復(fù)的索引值,將相同索引列值所關(guān)聯(lián)的ROWID存儲在一起。這樣,不但節(jié)省了存儲空間,查詢效率也提高了,真可謂兩全齊美了。對象T_ORDER和T_ORDER_ITEM必須通過外鍵查詢出子表所有關(guān)聯(lián)的記錄,所以在子表的外鍵上建立壓縮型的索引是非常適合的。3.2壓縮型索引的SQL語句創(chuàng)建壓縮型索引的SQL語句非常簡單,在T_ORDER_ITEM的ORDER_ID上創(chuàng)建壓縮型索引的SQL如下所示:on(需要在創(chuàng)建索引的語句后附上compress關(guān)鍵字就可以了。3.3PowerDesigner如何創(chuàng)建壓縮型索引1)打開T_ORDER_ITEM表的TablePropertiesIndexesORDER_ID列創(chuàng)建一個名為IDX_ORDER_ITEM_ORDER_ID的索引。2)雙擊IDX_ORDER_ITEM_ORDER_ID彈出IndexPropertiesOptions頁,按圖13將索引設(shè)置為壓縮型:圖4、建立滿足需求的復(fù)合鍵索引設(shè)計(jì)人員希望通過T_ORDER表上的IDX_ORDER_COMPOSITE復(fù)合索引滿足以下兩種組合條件的查詢:·CLIENT+ORDER_DATE+IS_SHIPPED·ORDER_DATE+IS_SHIPPED為方便闡述,我們特地將IDX_ORDER_COMPOSITE的創(chuàng)建SQL語句再次列出:(事實(shí)上,在CLIENT+ORDER_DATE+IS_SHIPPED三列上所執(zhí)行的復(fù)合條件查詢會應(yīng)用到這個索引,而在ORDER_DATE+IS_SHIPPED列上所執(zhí)行的復(fù)合查詢不會使用這個索引,因而將導(dǎo)致一個全表掃描的操作。SETAUTOTRACEON來查詢以上兩個復(fù)合查詢的執(zhí)行計(jì)劃:打開SQL/Plus,輸入以下的語句:*=分析得到的執(zhí)行計(jì)劃為:可見Oracle先利用IDX_ORDER_COMPOSITE得到滿足條件的記錄ROWID返回記錄。而下面查詢語句:*的執(zhí)行計(jì)劃則為:很明顯,Oracle在T_ORDER表上執(zhí)行了一個全表掃描的操作,沒有用到IDX_ORDER_COMPOSITE索引。對復(fù)合列索引,我們得出這個結(jié)論:假設(shè)在COL_1,COL_2,…,COL_n這些列上建立了一個復(fù)合索引:{}則只有WHERE語句上包含COL_1(復(fù)合索引的第一個字段)的查詢才會使用這個復(fù)合索引,而未包含COL_1的查詢則不會使用這個復(fù)合索引?;氐轿覀兊睦樱绾谓M足CLIENT+ORDER_DATE+IS_SHIPPED和ORDER_DATE+IS_SHIPPED兩種查詢的索引呢?考慮到IS_SHIPPED列基數(shù)很小,只有兩個可能的值:0,1。在這種情況下,有兩種方案:第一,分別為CLIENT+ORDER_DATE+IS_SHIPPED和ORDER_DATE+IS_SHIPPED建立一個復(fù)合索引;第二,分別在CLIENT和ORDER_DATE列上建立一個索引,而IS_SHIPEED列不建立索引。第一種方案的查詢效率最快,但因?yàn)镃LIENT和ORDER_DATE在索引中會重復(fù)出現(xiàn)兩次,占用較大的存儲空間。第二種方案CLIENT和ORDER_DATE不會在索引存儲出現(xiàn)兩次,較為節(jié)省空間,查詢效率比之于第一種方案會稍低一些,但影響不大。我們采用第二種方案為CLIENT和ORDER_DATE分別創(chuàng)建索引IDX_CLIENT和IDX_ORDER_DATE,組合查詢條件為CLIENT+ORDER_DATE+IS_SHIPPED時的執(zhí)行計(jì)劃為:而組合條件為ORDER_DATE+IS_SHIPPED時的執(zhí)行計(jì)劃為:通過這樣的改造,我們得到了一個滿足兩種組合查詢的執(zhí)行計(jì)劃。總結(jié)貫穿本文的訂單主從表實(shí)例結(jié)構(gòu)上很簡單,但是其粗糙的設(shè)計(jì)包含了許多問題,這也是許多對Oracle物理存儲結(jié)構(gòu)沒有很好理解的數(shù)據(jù)庫設(shè)計(jì)師容易忽視的地方。在一般情況下,這樣的設(shè)計(jì)并不會導(dǎo)致嚴(yán)重系統(tǒng)的性能問題,但是精益求精是每一位優(yōu)秀軟件設(shè)計(jì)師的品質(zhì),此外,對于設(shè)計(jì)師,一定要清楚這樣一條規(guī)律:對于等質(zhì)的性能提升,在編碼層面往往需要比設(shè)計(jì)層面付出更多的艱辛。在Oracle中提高數(shù)據(jù)庫的性能需要考慮的問題,注意的誤區(qū)還很多,本文涵蓋是一些最常見的問題。下面,我們將提高數(shù)據(jù)庫操作性能方法及一些誤區(qū)作個小結(jié):·對于大表,可以考慮創(chuàng)建分區(qū)表,分區(qū)表有范圍分區(qū)、散列分區(qū)、列表分區(qū)和散列分區(qū)幾種,通過它可以達(dá)到化大表為小表的目的?!た紤]適量的數(shù)據(jù)冗余,如一個業(yè)務(wù)表有一個審批狀態(tài),審批需要經(jīng)過多步,每一步對應(yīng)審批表的一條記錄,最后審批的那條記錄決定了業(yè)務(wù)的狀態(tài)。我們大可在業(yè)務(wù)表中存放一個審批狀態(tài)的標(biāo)志,以取消每次需要通過關(guān)聯(lián)審批表獲取業(yè)務(wù)審批狀態(tài)的復(fù)雜的關(guān)聯(lián)表查詢。·不要做太多的關(guān)聯(lián)表查詢,一些幾乎不發(fā)生數(shù)據(jù)變動的表碼表,如性別,學(xué)歷,婚姻狀態(tài)等表碼表,可以考慮在應(yīng)用程序啟動時一次性地下載到應(yīng)用程序的內(nèi)存中緩存起來,在從數(shù)據(jù)庫獲取結(jié)果集后,再由程序利用這些緩存的表碼表數(shù)據(jù)來翻譯這些表碼字段,而不要在數(shù)據(jù)庫中通過表間的關(guān)聯(lián)查詢方式來翻譯這些字段?!こ?吹揭恍┝钗翌康脑O(shè)計(jì):在需要進(jìn)行頻繁DML(INSERT,UP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論