基于代价的优化器通常能够选择正确的优化路径, 但有时也会做出不佳的选择, 导致语句执行缓慢。这时DBA就需要干预, 指示优化器使用特定的存取路径或连接类型生成执行计划。

ORACLE通过hints提示机制实现对优化器的干预。hints指示优化器按照DBA的意愿生成执行计划。

hints可以用来实现:

  • 指定优化器类型
  • 设定基于代价优化器的优化目标 (all_rows 或 first_rows)
  • 选择表的访问路径 (全表扫描、索引扫描、rowid访问)
  • 指定表之间的连接类型
  • 确定表之间的连接顺序
  • 控制语句的并行程度