基于代价的优化器通常能够选择正确的优化路径, 但有时也会做出不佳的选择, 导致语句执行缓慢。这时DBA就需要干预, 指示优化器使用特定的存取路径或连接类型生成执行计划。
ORACLE通过hints提示机制实现对优化器的干预。hints指示优化器按照DBA的意愿生成执行计划。
hints可以用来实现:
- 指定优化器类型
- 设定基于代价优化器的优化目标 (all_rows 或 first_rows)
- 选择表的访问路径 (全表扫描、索引扫描、rowid访问)
- 指定表之间的连接类型
- 确定表之间的连接顺序
- 控制语句的并行程度