

在一些特殊场景下,可能Oracle SQL不会自动走索引,这时候,如果对业务清晰熟悉,可以尝试使用强制索引,测试查询语句的性能。
以EMP表为例: 先在EMP表中建立唯一索引,如图。

普通搜索:
SELECT *
FROM emp t;
查看执行计划:

可以看到,是走的全表扫描。
使用强制索引,在SELECT 后面加上/*.......*/ 中间加上索引的属性,代码如下:
SELECT /*+index(t pk_emp)*/
*
FROM emp t
--强制索引,/*.....*/第一个星星后不能有空格,里边内容结构为:
加号index(表名 空格 索引名)。
--表一定使用别名,注释里的表也要使用别名。

可以看到,这是走的是索引PK_EMP。
使用HINT方式强制索引
首先要看你的Oracle优化器采用的是RBO还是CBO,
(1)如果使用的是RBO的话,会按照规则顺序来进行的.
(2)如果使用的是CBO的话,那么可以使用HINT方式进行修改。
语法:SELECT *+ index(table IndexName)*/

至于有多少种hint方式,请关注下期;

本文分享自微信公众号 - Oracle优化大师,如有侵权,请联系 service001@enmotech.com 删除。
文章转载自Oracle优化大师,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




