有时候Oracle自动生成的执行计划是“笨”的,我们给一些提示信息,让Oracle自动找到“聪明”的执行计划,这就是"hint"。
初学者,甚至专业人员,会遇到这样的疑惑:hint不起作用?
因为Oracle对于错误的hint是自动忽略,所以我们要特别注意hint的语法(暂列一条):如果在SQL中使用了别名,那么Hint中也要使用别名。
样例1:
- -- 使用索引,t2为别名,PK_My_Table2为索引名
- INDEX(t2 PK_My_Table2)
样例2:
- -- 要关联t和t1 (其中t和t1为别名)
- USE_MERGE(t,t1)
- -- 不要关联t1和t2 (其中t1和t2为别名)
- NO_USE_MERGE(t1,t2)
样例3:
- -- hint位于 /*+ 和 */ 之间
- SELECT
- /*+ USE_MERGE(t,t1) NO_USE_MERGE(t1,t2) INDEX(t1 PK_My_Table1) first_rows*/
- <<字段名列表>>
- from .....