ITPub博客

首页 > Linux操作系统 > Linux操作系统 > HINT - SQL语句暗示

HINT - SQL语句暗示

原创 Linux操作系统 作者:dbs101 时间:2013-03-02 17:32:56 0 删除 编辑

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博客 ” ,链接:https://blog.itpub.net/25105315/viewspace-755164/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: Profiler使用简介
请登录后发表评论 登录
全部评论
喜欢oracle、redis、mysql、pg数据库

注册时间:2010-12-18

  • 博文量
    94
  • 访问量
    473125