打印本文 打印本文 关闭窗口 关闭窗口
Oracle常見問題集(三)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数6576  更新时间:2009/4/22 22:05:50  文章录入:mintao  责任编辑:mintao
例如:

SELECT /*+ORDERED*/ A.COL1,B.COL2,C.COL3 FROM TABLE1 A,TABLE2

B,TABLE3 C

WHERE A.COL1=B.COL1 AND B.COL1=C.COL1;

 

195. /*+USE_NL(TABLE)*/

將指定表與嵌套的連接的行源進行連接,並把指定表作爲內部表.

例如:

SELECT /*+ORDERED USE_NL(BSEMPMS)*/

BSDPTMS.DPT_NO,BSEMPMS.EMP_NO,BSEMPMS.EMP_NAM FROM BSEMPMS,BSDPTMS

WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

 

196. /*+USE_MERGE(TABLE)*/

將指定的表與其他行源通過合併排序連接方式連接起來.

例如:

SELECT /*+USE_MERGE(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS

WHERE

BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

 

197. /*+USE_HASH(TABLE)*/

將指定的表與其他行源通過哈希連接方式連接起來.

例如:

SELECT /*+USE_HASH(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE

BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

 

198. /*+DRIVING_SITE(TABLE)*/

強制與ORACLE所選擇的位置不同的表進行查詢執行.

例如:

SELECT /*+DRIVING_SITE(DEPT)*/ * FROM BSEMPMS,DEPT@BSDPTMS WHERE

BSEMPMS.DPT_NO=DEPT.DPT_NO;

 

199. /*+LEADING(TABLE)*/

將指定的表作爲連接次序中的首表.

 

200. /*+CACHE(TABLE)*/

當進行全表掃描時,CACHE提示能夠將表的檢索塊放置在緩衝區緩存中最近最少列表LRU的最近使用端

例如:

SELECT /*+FULL(BSEMPMS) CAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;

 

201. /*+NOCACHE(TABLE)*/

當進行全表掃描時,CACHE提示能夠將表的檢索塊放置在緩衝區緩存中最近最少列表LRU的最近使用端

例如:

SELECT /*+FULL(BSEMPMS) NOCAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;

 

202. /*+APPEND*/

直接插入到表的最後,可以提高速度.

insert /*+append*/ into test1 select * from test4 ;

 

203. /*+NOAPPEND*/

通過在插入語句生存期內停止並行模式來啓動常規插入.

insert /*+noappend*/ into test1 select * from test4 ;

 

ORACLE優化器

. 選用適合的ORACLE優化器

 

ORACLE的優化器共有3:

a. RULE (基於規則) b. COST (基於成本) c. CHOOSE (選擇性)

 

設置缺省的優化器,可以通過對init.ora文件中OPTIMIZER_MODE參數的各種聲明,RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS

. 你當然也在SQL句級或是會話(session)級對其進行覆蓋.

爲了使用基於成本的優化器(CBO, Cost-Based Optimizer) , 你必須經常運行analyze

命令,以增加資料庫中的物件統計資訊(object statistics)的準確性.

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ...  下一页 >> 

打印本文 打印本文 关闭窗口 关闭窗口