说明
1.整理了一些本人平时SQL 调优中常用到的一些Hint,方便大家参考
2.Hint相关文章地址:
Oracle Hint之概念与用法: http://blog.itpub.net/69992972/viewspace-2756965/
Oracle Hint之常用Hint功能概述(一): http://blog.itpub.net/69992972/viewspace-2757087/
Oracle Hint之常用Hint功能概述(二): http://blog.itpub.net/69992972/viewspace-2757182/
Oracle Hint之常用Hint功能概述(三): http://blog.itpub.net/69992972/viewspace-2757238/
Oracle Hint之常用Hint功能概述(四): http://blog.itpub.net/69992972/viewspace-2757242/
Oracle Hint之常用Hint功能概述(五): http://blog.itpub.net/69992972/viewspace-2757273/ 访问路径Hint
|
Hint 名 |
功能概述 |
举例 |
|
/*+ rowid(tab) */ |
该hint让优化器对指定的表以rowid方式访问 |
|
|
/*+ full(tab) */ |
该hint让优化器对指定的表进行全表扫描 |
SELECT /*+ FULL(e) */ employee_id, last_name FROM emp e WHERE last_name = ‘SMITH’; --即使“last_name”有索引,也会进行全表扫描 |
|
/*+ hash(tab) */ |
该hint让指示优化器使用哈希扫描来访问指定的表。此hint仅适用于hash cluster中的表 |
|
|
/*+ cluster */ |
该hint让优化器使用簇(cluster)扫描来访问指定的表。该hint仅适用于索引簇中的表 |
优化器Hint
|
Hint 名 |
功能概述 |
举例 |
|
/*+ all_rows */ |
该hint让优化器启用CBO来优化语句块,以达到最佳吞吐量(即最小的总资源消耗)为目标。从Oracle 10g开始的默认优化器模式( 实际工作中默认采用这种方式就行) |
|
|
/*+ rule */ |
该hint让优化器采用RBO模式,所以该RBO模式仅限于和DRIVING_SITE HINT一起使用,否则和其他hint一起使用就会导致其他hint失效 |
|
|
/*+ first_rows(n) */ |
该hint让优化器去优化单个SQL语句以实现快速响应,即选择最有效地返回前n行的执行计划。对于整数n,即为指定要返回的行数。 |
|
|
/*+ choose */ |
该hint让优化器自动选择是使用CBO还是RBO模式,依据就是数据字典有要访问的表的统计信息,就会采用CBO,反之就采用RBO |
|
|
/*+ opt_param(‘xxx’ ‘xxx’) */ |
使用该hint可以仅在当前使用SQL查询时设置初始化系统参数,比session级的系统参数细粒度要更高。该提示仅对以下参数有效:APPROX_FOR_AGGREGATION,APPROX_FOR_COUNT_DISTINCT,APPROX_FOR_PERCENTILE,OPTIMIZER_DYNAMIC_SAMPLING,OPTIMIZER_INDEX_CACHING,OPTIMIZER_INDEX_COST_ADJ,OPTIMIZER_STAR_FORMATION_VIEW 和STAR_TRANSFORMATION_ENABLED。 |
SELECT /*+ OPT_PARAM('star_transformation_enabled' 'true') */ * FROM tab; |
