1.hint作用
Hints只应用在它们所在sql语句块(statement block,由select、update、delete关键字标识)上,对其它SQL语句或语句的其它部分没有影响。如:对于使用union操作的2个sql语句,如果只在一个sql语句上有Hints,则该Hints不会影响另一个sql语句。
2.常用hint
hint | 功能 |
/*+ driving_site(table_name) */ | 选择执行的主表,在使用dblink时,选择大表可显著加快查询速度 |
/*+ parallel(table_name n) */ | 在sql中指定执行的并行度,这个值将会覆盖自身的并行度 |
/*+ index(table_name index_name) */ | 表明对表选择索引的扫描方法 |
select /*+ driving_site(t2) */ t1.* from t1, t2@dblink1 where t1.id = t2.id;
select /*+ parallel(t1 4) */ t1.* from t1;
3.表关联相关hint
hint | 功能 |
/*+ leading(table_1,table_2) */ | 在多表关联查询中,指定哪个表作为驱动表,即告诉优化器首先要访问哪个表上的数据。 |
/*+ order */ | 让Oracle根据from后面表的顺序来选择驱动表 |
/*+ use_nl(table_1,table_2) */ | 在多表关联查询中,指定使用nest loops方式进行多表关联。 |
/*+ use_hash(table_1,table_2) */ | 在多表关联查询中,指定使用hash join方式进行多表关联 |