資源描述:
《sql語(yǔ)句的優(yōu)化方法(hint)》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、SQL語(yǔ)句的優(yōu)化方法(Hint)本講主要講的是SQL語(yǔ)句的優(yōu)化方法!主要基于ORACLE9I的.(174-203) 174./*+ALL_ROWS*/ 表明對(duì)語(yǔ)句塊選擇基于開(kāi)銷(xiāo)的優(yōu)化方法,并獲得最佳吞吐量,使資源消耗最小化.例如:SELECT/*+ALL+_ROWS*/EMP_NO,EMP_NAM,DAT_INFROMBSEMPMSWHEREEMP_NO='CCBZZP'; 175./*+FIRST_ROWS*/ 表明對(duì)語(yǔ)句塊選擇基于開(kāi)銷(xiāo)的優(yōu)化方法,并獲得最佳響應(yīng)時(shí)間,使資源消耗最小化.例如:SELECT/*+FIRST_ROWS*/EMP_NO,EMP_NAM,DAT_INFROMB
2、SEMPMSWHEREEMP_NO='CCBZZP'; 176./*+CHOOSE*/ 表明如果數(shù)據(jù)字典中有訪(fǎng)問(wèn)表的統(tǒng)計(jì)信息,將基于開(kāi)銷(xiāo)的優(yōu)化方法,并獲得最佳的吞吐量;表明如果數(shù)據(jù)字典中沒(méi)有訪(fǎng)問(wèn)表的統(tǒng)計(jì)信息,將基于規(guī)則開(kāi)銷(xiāo)的優(yōu)化方法;例如:SELECT/*+CHOOSE*/EMP_NO,EMP_NAM,DAT_INFROMBSEMPMSWHEREEMP_NO='CCBZZP'; 177./*+RULE*/ 表明對(duì)語(yǔ)句塊選擇基于規(guī)則的優(yōu)化方法.例如:SELECT/*+RULE*/EMP_NO,EMP_NAM,DAT_INFROMBSEMPMSWHEREEMP_NO='CCBZZP';
3、178./*+FULL(TABLE)*/ 表明對(duì)表選擇全局掃描的方法.例如:SELECT/*+FULL(A)*/EMP_NO,EMP_NAMFROMBSEMPMSAWHEREEMP_NO='CCBZZP'; 179./*+ROWID(TABLE)*/ 提示明確表明對(duì)指定表根據(jù)ROWID進(jìn)行訪(fǎng)問(wèn).例如:SELECT/*+ROWID(BSEMPMS)*/*FROMBSEMPMSWHEREROWID>='AAAAAAAAAAAAAA'ANDEMP_NO='CCBZZP'; 180./*+CLUSTER(TABLE)*/ 提示明確表明對(duì)指定表選擇簇掃描的訪(fǎng)問(wèn)方法,它只對(duì)簇對(duì)象有效.例如:SE
4、LECT/*+CLUSTER*/BSEMPMS.EMP_NO,DPT_NOFROMBSEMPMS,BSDPTMSWHEREDPT_NO='TEC304'ANDBSEMPMS.DPT_NO=BSDPTMS.DPT_NO;181./*+INDEX(TABLEINDEX_NAME)*/ 表明對(duì)表選擇索引的掃描方法.例如:SELECT/*+INDEX(BSEMPMSSEX_INDEX)USESEX_INDEXBECAUSETHEREAREFEWMALEBSEMPMS*/FROMBSEMPMSWHERESEX='M'; 182./*+INDEX_ASC(TABLEINDEX_NAME)*/ 表明對(duì)
5、表選擇索引升序的掃描方法.例如:SELECT/*+INDEX_ASC(BSEMPMSPK_BSEMPMS)*/FROMBSEMPMSWHEREDPT_NO='CCBZZP'; 183./*+INDEX_COMBINE*/ 為指定表選擇位圖訪(fǎng)問(wèn)路經(jīng),如果INDEX_COMBINE中沒(méi)有提供作為參數(shù)的索引,將選擇出位圖索引的布爾組合方式.例如:SELECT/*+INDEX_COMBINE(BSEMPMSSAL_BMIHIREDATE_BMI)*/*FROMBSEMPMSWHERESAL<5000000ANDHIREDATE6、DEX_NAME)*/ 提示明確命令優(yōu)化器使用索引作為訪(fǎng)問(wèn)路徑.例如:SELECT/*+INDEX_JOIN(BSEMPMSSAL_HMIHIREDATE_BMI)*/SAL,HIREDATEFROMBSEMPMSWHERESAL<60000; 185./*+INDEX_DESC(TABLEINDEX_NAME)*/ 表明對(duì)表選擇索引降序的掃描方法.例如:SELECT/*+INDEX_DESC(BSEMPMSPK_BSEMPMS)*/FROMBSEMPMSWHEREDPT_NO='CCBZZP'; 186./*+INDEX_FFS(TABLEINDEX_NAME)*/ 對(duì)指定的表執(zhí)行
7、快速全索引掃描,而不是全表掃描的辦法.例如:SELECT/*+INDEX_FFS(BSEMPMSIN_EMPNAM)*/*FROMBSEMPMSWHEREDPT_NO='TEC305'; 187./*+ADD_EQUALTABLEINDEX_NAM1,INDEX_NAM2,...*/ 提示明確進(jìn)行執(zhí)行規(guī)劃的選擇,將幾個(gè)單列索引的掃描合起來(lái).例如:SELECT/*+INDEX_FFS(BSEMP