SQL性能優(yōu)化策略之聯(lián)合索引優(yōu)化方法_第1頁(yè)
SQL性能優(yōu)化策略之聯(lián)合索引優(yōu)化方法_第2頁(yè)
SQL性能優(yōu)化策略之聯(lián)合索引優(yōu)化方法_第3頁(yè)
SQL性能優(yōu)化策略之聯(lián)合索引優(yōu)化方法_第4頁(yè)
SQL性能優(yōu)化策略之聯(lián)合索引優(yōu)化方法_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、案例:一條很簡(jiǎn)單的SQL語(yǔ)句明明選擇了索引掃描,但效率還是很低,SQL語(yǔ)句比較簡(jiǎn)單,是對(duì)單張表進(jìn)行查詢,示例代碼如下:SQLsetautottraceSQLSELECTREQUISITION_IDPARAM1,1PARAM2,/*電子標(biāo)簽*/1PARAM32FROMdbo.LIS_REQUISITION_INFO3WHEREPRINT_TIME=4TO_DATE(2019-01-0100:00:00,YYYY-MM-DDHH24:MI:SS)5ANDPRINT_TIMESYSDATE6andlength(requisition_id)=127AND(TAT1_STATE=ORTAT1_STAT

2、EISNULL)8ANDROWNUM800;ExecutionPlan-Planhashvalue:1151136383-|Id|Operation|Name|Rows|Bytes|Cost(%CPU)|Time|-|0|SELECTSTATEMENT|799|18377|160K(1)|00:32:03|*1|COUNTSTOPKEY|*2|FILTER|*3|TABLEACCESSBYINDEXROWID|LIS_REQUISITION_INFO|800|18400|160K(1)|00:32:03|*4|INDEXRANGESCAN|I_PRINT_TIME|3799(1)|00:00:

3、46|-PredicateInformation(identifiedbyoperationid):-1-filter(ROWNUMTO_DATE(2019-01-0100:00:00,syyyy-mm-ddhh24:mi:ss)3-filter(TAT1_STATEISNULLANDLENGTH(REQUISITION_ID)=12)4-access(PRINT_TIME=TO_DATE(2019-01-0100:00:00,syyyy-mm-ddhh24:mi:ss)ANDPRINT_TIMEselect/*+NO_MERGELEADING(ab)*/b.owner,b.table_nam

4、e,a.column_name,b.num_rows,a.num_distinctCardinality,ROUND(A.num_distinct*100/B.num_rows,1)selectivityfromdba_tab_col_statisticsa,dba_tablesbwherea.owner=b.owneranda.table_name=b.table_nameanda.owner=DBOanda.table_name=LIS_REQUISITION_INFOanda.column_name=PRINT_TIME;OWNERTABLE_NAMECOLUMN_NAMENUM_ROW

5、SCARDINALITYSELECTIVITY-DBOLIS_REQUISITION_INFOPRINT_TIME6933600222694432.1LIS_REQUISITION_INFO的數(shù)據(jù)量為6 933 600條,PRINT_TIME列的不同值為2 226 944個(gè),選擇性高達(dá)32.1%,PRINT_TIME給定了條件時(shí)間范圍,目前從執(zhí)行計(jì)劃來(lái)看,LIS_REQUISITION_INFO表的訪問(wèn)先通過(guò)I_PRINT_TIME索引進(jìn)行范圍掃描,符合條件的記錄回表之后再過(guò)濾,產(chǎn)生了大量的單塊讀。雖然PRINT_TIME的選擇性很高,且符合索引掃描的要求,但因?yàn)槠浣o定的條件范圍太大,導(dǎo)致該字

6、段并不是一個(gè)很好的索引選擇。除了PRINT_TIME,該SQL還有requisition_id、TAT1_STATE和ROWNUM,下面就來(lái)看下它們的選擇性,命令如下:SQLselect/*+NO_MERGELEADING(ab)*/b.owner,b.table_name,a.column_name,b.num_rows,a.num_distinctCardinality,ROUND(A.num_distinct*100/B.num_rows,1)selectivityfromdba_tab_col_statisticsa,dba_tablesbwherea.owner=b.ownerand

7、a.table_name=b.table_nameanda.owner=DBOanda.table_name=LIS_REQUISITION_INFOanda.column_namein(PRINT_TIME,REQUISITION_ID,TAT1_STATE);OWNERTABLE_NAMECOLUMN_NAMENUM_ROWSCARDINALITYSELECTIVITY-DBOLIS_REQUISITION_INFOTAT1_STATE693360020DBOLIS_REQUISITION_INFOREQUISITION_ID69336006933600100DBOLIS_REQUISIT

8、ION_INFOPRINT_TIME6933600222694432.1SQLselectcount(*),fromdbo.LIS_REQUISITION_INFOwherelength(requisition_id)=12COUNT(*)-6968919SQLselectTAT1_STATE,count(*)fromdbo.LIS_REQUISITION_INFOgroupbyTAT1_STATE;TAT1_STATCOUNT(*)-1242217153553662371401REQUISITION_ID為主鍵的選擇性很高,但幾乎所有的記錄值都符合length (requisition_id

9、) = 12,TAT1_STATE的數(shù)據(jù)分布存在傾斜,條件中的TAT1_STATE = OR TAT1_STATE IS NULL屬于第一種情況,占總數(shù)據(jù)量的1/3。該字段為固定取值(TAT1_STATE = OR TAT1_STATE IS NULL)。如果 PRINT_TIME和TAT1_STATE組合創(chuàng)建聯(lián)合索引,那么效果又將如何呢?命令如下:SQLcreateindexdbo.idx_LIS_REQUISITION_INFO_com1ondbo.LIS_REQUISITION_INFO(PRINT_TIME,TAT1_STATE)online;SQLSELECT/*+index(LIS

10、_REQUISITION_INFOdbo.idx_LIS_REQUISITION_INFO_com1)*/REQUISITION_IDPARAM1,1PARAM2,/*電子標(biāo)簽*/1PARAM3FROMdbo.LIS_REQUISITION_INFOWHEREPRINT_TIME=TO_DATE(2019-01-0100:00:00,YYYY-MM-DDHH24:MI:SS)ANDPRINT_TIMESYSDATEandlength(requisition_id)=12AND(TAT1_STATE=ORTAT1_STATEISNULL)ANDROWNUM800;ExecutionPlan-Pl

11、anhashvalue:1406522876-|Id|Operation|Name|Starts|E-Rows|A-Rows|A-Time|Buffers|-|0|SELECTSTATEMENT|1|6|00:00:00.27|8146|*1|COUNTSTOPKEY|1|6|00:00:00.27|8146|*2|FILTER|1|6|00:00:00.27|8146|*3|TABLEACCESSBYINDEXROWID|LIS_REQUISITION_INFO|1|144|6|00:00:00.27|8146|*4|INDEXRANGESCAN|IDX_LIS_REQUISITION_IN

12、FO_COM1|1|14398|8|00:00:00.27|8140|-PredicateInformation(identifiedbyoperationid):-1-filter(ROWNUMTO_DATE(2019-01-0100:00:00,syyyy-mm-ddhh24:mi:ss)3-filter(LENGTH(REQUISITION_ID)=12)4-access(PRINT_TIME=TO_DATE(2019-01-0100:00:00,syyyy-mm-ddhh24:mi:ss)ANDTAT1_STATEISNULLANDPRINT_TIMESYSDATE!)filter(TAT1_STATEISNULL)Statistics-1recursivecalls0dbblockgets8008consistentgets8014physicalreads0redosize471bytessentviaSQL*Nettoclient508bytesreceivedviaSQL*Netfromclient1SQL*Netroundtripsto/fromclient0sorts(memory)0sorts(disk)0rowsprocessed創(chuàng)建索引之后,SQL性能有了明顯的提升,邏輯讀從原來(lái)的

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論