需要先学会看执行计划
nested loop嵌套循环
table Access full 全表扫码
merge join cartesian 笛卡尔积连接
hints
指定优化器模式的hint
RULE
CHOOSE
FIRST_ROW
ALL_ROWS 基于代价的方式进行优化,优化目标是最大吞吐量
指定访问路径的hint
/*+ ordered */
/*+ lending()*/
use_hash(table name or alias)
ordered full(table name or alias)
parallel(table name or alias)
oracle hints都有哪些,都是什么功能
Oracle Hints是在SQL查询中指定的一个特殊备注,可以用来影响 Oracle 数据库SQL执行的方式。它们可以改变查询优化器的行为,以帮助优化直询的性能。 | |
以下是一些常见的 Oracle Hints! |
|
1./*+ INDEX (index_name) */:指示 Oracle 使用指定的索引执行查询。 |
|
2./*+ FULL(table_name) */:强制 Oracle执行全表扫描。 |
|
3./*+ USE_HASH (table_name) */:指示 Oracle 使用哈希连接执行查询。 |
|
4./*+ORDERED M/:强制 Oracle 按照查询中所列出的顺序执行真间,而不尝试更新排序。 |
|
5.1+ ALL_ROWS:优化器尝试返回最小的全数据集,这通常意味着便用选择性低的索引。 |
|
6./*+FIRST_ROWS(n)”/:优化器尝试优化查询以返回前N行。 |
|
7./*+ NO_INDEX*/:强制 Oracle 不使用任何索引执行查询。 |
|
8./*+ LEADING(table_name)*/:指示 Oracle 将指定的表(table_name)放置在执行计划中的前面。 |
|
9./*+ NO_MERGE */:强制 Oracle 不合并两个或更多索引访问路径。 |
|
这些 Oracle Hints 可以让开发人员有更多的控制力来优化查间性能。 |