由于各种原因导致Hint被Oracle忽略之后,Oracle并不会给出任何提示或者警告,更不会报错。
情形一:使用的Hint有语法或者拼写错误。
情形二:使用的Hint无效
对于非分区索引而言,索引范围扫描或者索引全扫描都不可能并行执行。
哈希连接只适用于等值连接条件,不等值的连接条件对哈希而言是没有意义的。
情形三:使用的Hint自相矛盾
Oracle只是将自相矛盾的Hint全部忽略掉,但如果你使用的组合Hint中还有其他有效Hint,则这些有效Hint不受影响。
情形四:使用的Hint受到了查询转换的干扰。
情形五:使用的Hint受到了保留关键字的干扰。
Oracle再解析Hint时,是按照从左到右的顺序进行的,如果遇到的词是Oracle的保留关键字,则Oracle将忽略这个次以及之后的所有词;如果遇到的词既不是关键字也不是Hint,就忽略该词;如果遇到的词是有效的Hint,那么Oracle就会保留该Hint。
组合Hint中各个Hint间不要使用逗号“,”来彼此分隔(而应该使用空格来彼此分割),否则可能会导致该组合Hint中的部分Hint被Oracle忽略。
尽量不要再组合Hint中同时混写有效的Hint和自定义的注释,如果非要在组合Hint中写自定义的注释,则最好将他们写道组合Hint的最末尾。