oracle常用hint的用法
文章作者 100test 发表时间 2012:03:17 17:51:50
来源 100Test.Com百考试题网
导读:hints是oracle提供的一种机制,用来告诉优化器按照我们的告诉它的方式生成执行计划。百考试题免费提供大量实用资料,更多资料进入#0000ff>oracle认证历年真题,模拟题,辅导等。
  写HINT目的
  手工指定SQL语句的执行计划
  hints是oracle提供的一种机制,用来告诉优化器按照我们的告诉它的方式生成执行计划。我们可以用hints来实现:
  1) 使用的优化器的类型
  2) 基于代价的优化器的优化目标,是all_rows还是first_rows。
  3) 表的访问路径,是全表扫描,还是索引扫描,还是直接利用rowid。
  4) 表之间的连接类型
  5) 表之间的连接顺序
  6) 语句的并行程度
  2、HINT可以基于以下规则产生作用
  表连接的顺序、表连接的方法、访问路径、并行度
  3、HINT应用范围
  dml语句
  查询语句
  4、语法
  {DELETE|INSERT|SELECT|UPDATE} /*  hint [text] [hint[text]]... */
  or
  {DELETE|INSERT|SELECT|UPDATE} --  hint [text] [hint[text]]...
  如果语(句)法不对,则ORACLE会自动忽略所写的HINT,不报错
  1. /* ALL_ROWS*/
  表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.
  例如:
  SELECT /* ALL_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO= SCOTT .
  2. /* FIRST_ROWS*/
  表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.
  例如:
  SELECT /* FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO= SCOTT .