HINT - SQL语句暗示

hints - SQL语句的注释,指导oracle优化器选择指定的执行计划。


下面是常见的一些hints:


1. unnest
UNNEST hint指导优化器unnest子查询,也就是将子查询合并到包含子查询的查询块中,将它们
作为一个整体来进行评估访问路径和关联方式。当子查询返回数据较多时,使用UNNEST就比较合适。


案例:not in和not exists,SQL语句可能会进行filter操作。如果使用unnest,SQL语句将
优先使用hash join anti。


http://blog.tanelpoder.com/2011/06/28/knowing-what-you-want-to-achieve-before-thinking-of-how-to-achieve-it-a-query-optimization-example-2/


2. USE_CONCAT
USE_CONCAT hint指导优化器将where中的OR条件转化成使用UNION ALL集合操作。当or条件中的
字段上都有索引时,使用USE_CONCAT比较合适。

SELECT /*+ USE_CONCAT */ *
  FROM hr.employees e
  WHERE manager_id = 108
     OR department_id = 110;

3. NO_INDEX
. NO_INDEX  hint指导优化器不要使用一个或者多个索引。

SELECT /*+ NO_INDEX(employees EMP_EMP_ID_PK) */ employee_id
  FROM hr.employees
  WHERE employee_id > 200;

 
4. NO_EXPAND
NO_EXPAND hint指导优化器不用使用where中的OR扩展。有时不使用OR扩展消耗更低。
SELECT /*+ NO_EXPAND */ *
  FROM employees e, departments d
  WHERE e.manager_id = 108
     OR d.department_id = 110;
 
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25105315/viewspace-755164/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25105315/viewspace-755164/

你可能感兴趣的:(HINT - SQL语句暗示)