ORACLE 的优化器模式判断,主要靠一个参数搞定:optimizer_mode。你只要用show parameter optimizer_mode查一下,就知道数据库现在走的是哪条路了。

参数值挺多的,比如rule代表老牌的 RBO 规则优化器,choose就有点灵活——表有统计信息就用 CBO,没有就回退 RBO。

all_rows是 CBO 里的大吞吐量派,追求整体效率;first_rows更适合前几行必须秒回的场景;还有first_rows_100这类的,算是更细致的调优策略,适合你需要快速返回固定行数的时候。

这些优化器的选择,其实和你业务场景、SQL 写法、统计信息是否新鲜都有关系。如果你在做 SQL 调优,不妨先确认一下现在数据库到底是哪种优化器思路,心里有数才好下手。

顺便推荐几个不错的资源,像从 RBO 到 CBO 的转变CBO 优化 SQL 课程,还有一篇挺直观的优化器选择文档,都可以翻一翻。