1. /*+all_rows*/

2、HINT能够依赖以下准则发生功能

select /*+index(bsempms sex_index) use sex_index because there are
fewmale bsempms */ from bsempms where sex=’m’;

SELECT /*+MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO FROM BSEMPMS A (SELET DPT_NO ,AVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO AND A.SALV.AVG_SAL; 
  1. /*+first_rows*/
    申明对语句块接受基于费用的优化措施,并获得最好响合时间,使能源消耗最小化.
    比如:
SELECT /*+INDEX_JOIN(BSEMPMS SAL_HMI HIREDATE_BMI)*/ SAL,HIREDATE FROM BSEMPMS WHERE SAL60000; 

select /*+all+_rows*/ emp_no,emp_nam,dat_in from bsempms where
emp_no=’scott’;


  1. /*+rowid(table)*/ 提示明确证明对点名表按照rowid进行访谈. 举个例子:

因此在插入语句生存期内停下互相格局来运营平常插入.

  1. /*+full(table)*/ 注解对表选择全局扫描的方法. 举个例子:

将钦定的表与此外行源通过群集排序连接格局连接起来.

  1. /*+index(table index_name)*/ 申明对表选取索引的扫视方法. 比方:

例如:

select /*+ rule */ emp_no,emp_nam,dat_in from bsempms where
emp_no=’scott’;

SELECT /*+USE_MERGE(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO; 

select /*+choose*/ emp_no,emp_nam,dat_in from bsempms where
emp_no=’scott’;

对查询中的WHERE前面包车型客车OLX570条件进行转变为UNION ALL的结缘查询.

select /*+full(a)*/ emp_no,emp_nam from bsempms a where
emp_no=’scott’;

  1. /*+APPEND*/

标记对语句块选取基于花费的优化措施,并取得最好吞吐量,使能源消耗最小化.
比方:

 SELECT /*+ROWID(BSEMPMS)*/ * FROM BSEMPMS WHERE ROWID='AAAAAAAAAAAAAA' AND EMP_NO='SCOTT'; 
  1. /*+cluster(table)*/
    提醒明显注解对点名表选拔簇扫描的拜会方法,它只对簇对象有效. 举例:

2State of Qatar 基于代价的优化器的优化目的,是all_rows还是first_rows。

首页 1 2 3 4 末页

SELECT /*+NO_EXPAND*/ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M'; 
  1. /*+rule*/ 表明对语句块采取基于法规的优化方法. 比如:

唤醒明显开展执行设计的取舍,将多少个单列索引的扫描合起来.

select /*+cluster */ bsempms.emp_no,dpt_no from bsempms,bsdptms
where dpt_no=’tec304′ and bsempms.dpt_no=bsdptms.dpt_no;

例如:

select /*+rowid(bsempms)*/ * from bsempms where
rowid=’aaaaaaaaaaaaaa’ and emp_no=’scott’;

6卡塔尔 语句的相互作用程度

select /*+index_asc(bsempms pk_bsempms) */ from bsempms where
dpt_no=’scott’;

SELECT /*+CLUSTER */ BSEMPMS.EMP_NO,DPT_NO FROM BSEMPMS,BSDPTMS WHERE DPT_NO='TEC304' AND BSEMPMS.DPT_NO=BSDPTMS.DPT_NO; 

select /*+first_rows*/ emp_no,emp_nam,dat_in from bsempms where
emp_no=’scott’;

  1. /*+INDEX_JOIN(TABLE INDEX_NAME)*/
  1. /*+index_asc(table index_name)*/ 表明对表接受索引升序的扫描方法.
    举个例子:
  1. /*+INDEX_ASC(TABLE INDEX_NAME)*/
  1. /*+choose*/
    注解要是数量字典中有访谈表的总括音信,将依赖花销的优化措施,并获得最好的吞吐量;
    注解假若数据词典中未有访谈表的总计音讯,将依据法规耗费的优化措施; 比如:
SELECT /*+FULL(A)*/ EMP_NO,EMP_NAM FROM BSEMPMS A WHERE EMP_NO='SCOTT'; 

5卡塔尔(قطر‎ 表之间的连续几天各样

例如:

SELECT /*+DRIVING_SITE(DEPT)*/ * FROM BSEMPMS,DEPT@BSDPTMS WHERE BSEMPMS.DPT_NO=DEPT.DPT_NO; 
  1. /*+ALL_ROWS*/

例如:

例如:

例如:

  1. /*+REWRITE*/
  1. /*+FULL(TABLE)*/

标记对语句块选取基于成本的优化措施,并获得最佳吞吐量,使能源消耗最小化.

例如:

SELECT /*+INDEX_ASC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO='SCOTT'; 

表连接的逐个、表连接的形式、访问路线、并行度

例如:

  1. /*+INDEX_COMBINE*/
 SELECT /*+INDEX(BSEMPMS SEX_INDEX) USE SEX_INDEX BECAUSE THERE ARE FEWMALE BSEMPMS */ FROM BSEMPMS WHERE SEX='M'; 

申明对表选择索引降序的扫视方法.

3、HINT应用范围

遵照表出今后FROM中的顺序,O哈弗DERED使ORACLE依此顺序对其连接.

select count(*) From wid_serv_prod_mon_1100 a where a.acct_month = 201010 and a.partition_id = 10 and serv_state not in ('2HB', '2HL', '2HJ', '2HP', '2HF') and online_flag in (0) and incr_product_id in (2000020) and product_id in (2020966, 2020972, 2100297, 2021116) and billing_mode_id = 1 and exp_date  to_date('201010', 'yyyymm') and not exists (select /*+no_index (b IDX_W_CDR_MON_SERV_ID_1100)*/ 1 from wid_cdr_mon_1100 b where b.acct_month = 201010 and b.ANA_EVENT_TYPE_4 in ('10201010201', '10202010201', '10203010201', '10203010202', '10203030201', '10203030202', '10204010201', '10204010202', '10204030201') and a.serv_id = b.serv_id) 
  1. /*+NO_MERGE(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; 

例如:

例如:

例如:

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

例如:

将钦命表与嵌套的总是的行源实行三番五次,并把钦点表作为内部表.

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

例如:

唤醒明显注解对点名表依据ROWID进行访谈.

例如:

申明对语句块采取基于法规的优化方法.

  1. /*+ORDERED*/

标记对表选择全局扫描的方法.

  1. /*+ADD_EQUAL TABLE INDEX_NAM1,INDEX_NAM2,…*/
SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; 
  1. /*+MERGE(TABLE)*/
SELECT /*+ALL_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; 

免强与ORACLE所筛选的地方分裂的表张开询问实践.

SELECT /*+USE_HASH(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO; 
  1. /*+USE_MERGE(TABLE)*/
  1. /*+INDEX_DESC(TABLE INDEX_NAME)*/

对点名的表施行高效全索引围观,并不是全表扫描的办法.

例如:

  1. NO_INDEX: 内定不应用什么索引

    /+ NO_INDEX ( table [index [index]…] ) / select /+ no_index(emp ind_emp_sal ind_emp_deptno)/ * from emp where deptno=200 and sal300;

  2. parallel

    select /+ parallel(emp,4)/ * from emp where deptno=200 and sal300;

dml语句

例如:

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注