CHOOSE -- 根据是否有统计信息,选择不同的优化器 RULE -- 使用基于规则的优化器
例子: SELECT /*+ FIRST_ROWS(10) */ employee_id, last_name, salary, job_id FROM employees WHERE department_id = 20; SELECT /*+ CHOOSE */ employee_id, last_name, salary, job_id FROM employees WHERE employee_id = 7566;
SELECT /*+ RULE */ employee_id, last_name, salary, job_id FROM employees WHERE employee_id = 7566;
指示存储路径的hints:
FULL /*+ FULL ( table ) */ 指定该表使用全表扫描 ROWID /*+ ROWID ( table ) */ 指定对该表使用rowid存取方法,该提示用的较少 INDEX /*+ INDEX ( table [index]) */ 使用该表上指定的索引对表进行索引扫描 INDEX_FFS /*+ INDEX_FFS ( table [index]) */ 使用快速全表扫描 NO_INDEX /*+ NO_INDEX ( table [index]) */ 不使用该表上指定的索引进行存取,仍然可以使用其它的索引进行索引扫描
SELECT /*+ FULL(e) */ employee_id, last_name FROM employees e WHERE last_name LIKE :b1;
SELECT /*+ROWID(employees)*/ * FROM employees WHERE rowid > 'AAAAtkAABAAAFNTAAA' AND employee_id = 155;
SELECT /*+ INDEX(A sex_index) use sex_index because there are few male patients */ A.name, A.height, A.weight FROM patients A WHERE A.sex = ’m’;
SELECT /*+NO_INDEX(employees emp_empid)*/ employee_id FROM employees WHERE employee_id > 200;
指示连接顺序的hints: ORDERED /*+ ORDERED */ 按from 字句中表的顺序从左到右的连接 STAR /*+ STAR */ 指示优化器使用星型查询 SELECT /*+ORDERED */ o.order_id, c.customer_id, l.unit_price * l.quantity
上一篇:通过分析SQL语句的执行计划优化SQL(三)
下一篇:数据库Oracle9i的企业管理器介绍
|