ORACLE 的执行计划有时候也不靠谱,是在代价优化器翻车的时候。用hints干预,就是个比较实用的办法。你可以指定让它走全表扫描索引扫描,甚至指定连接顺序并行度。就像给优化器发小纸条,告诉它怎么走才快,少走弯路。

代价优化器一般挺聪明,但也有栽跟头的时候。有些 SQL 明明全表更快,它非要用索引,结果执行效率差得让人想砸电脑。遇到这种情况,用hints提示它一下,效率立马提上来。

用法也不复杂,比如你它全表扫描,就加个FULL(t),想让它并行执行就加PARALLEL(t,4)。你说了算,它就老实听话,效果还挺。

还有一点,hints不仅能控制访问路径,还能影响连接类型连接顺序,甚至让你选是追求所有行(ALL_ROWS)还是第一行(FIRST_ROWS)。用得好,真的能省掉不少性能调优的烦心事。

想了解更多优化细节?这些文章你可以看看:ORACLE 执行计划和 SQL 优化避免全表扫描的常见操作,还有全表扫描性能优化策略详解,都写得还不错。

如果你手上有些慢得离谱的 SQL,不妨试试加点hints,有时候就是那一点点“人为干预”,能救命。