Oracle SQL中/ * + * /的用途是什么?

时间:2016-11-22 07:02:16

标签: sql oracle

为什么我们在sql上使用/* */? 例如:

select /*+ index(sssi_iq SITE_STAT_TSTAMP_IDX) */

有人可以解释一下吗?

3 个答案:

答案 0 :(得分:5)

--是一行评论,例如 -

select      * 
from        t -- this is a line comment
order by    i

/* */是一个多行评论,例如 -

select      * 
from        t /* this is 
   a multi-line line 
      comment */
order by  /* and so is this */  i

添加+/*+ */--+)时,它表示优化程序提示,这是优化程序向优化程序发出的指令可能会也可能不会尊重 如果你的提示被忽略,你在oracle中没有任何迹象(错误/交战)。

示例:

create table t1 (i int);
create table t2 (i int);

接受提示

select /*+ use_nl    (t1,t2) */ * from t1 join t2 on t1.i = t2.i;

enter image description here

select /*+ use_merge (t1,t2) */ * from t1 join t2 on t1.i = t2.i;

enter image description here

select /*+ use_hash  (t1,t2) */ * from t1 join t2 on t1.i = t2.i;

enter image description here

忽略提示

select /*+ use_hash  (t1,t2) */ * from t1 join t2 on t1.i != t2.i;

enter image description here

select /*+ use_merge (t1,t2) */ * from t1 join t2 on t1.i != t2.i;

enter image description here

答案 1 :(得分:4)

这些是Oracle Optimizer提示,它指示优化器根据我们的要求执行任务。

/*+ hint [text] [hint[text]]... */

更多信息:Optimizer Hints

答案 2 :(得分:0)

它只是评论块, 多行评论/ *评论在这里* / 单行 - 评论来到这里 oracle中其他注释格式是双连字符。 例如

 -- this is a query about date 
/* this is
a query
about
date */
select sysdate from dual;