优化器的选择一直是做 SQL 调优绕不开的点。Oracle SQL这套优化思路里,first_rowsall_rows两个模式,你得看场景来选。前者追求快响应,适合前端页面那种用户点一下就得出结果的;后者偏重整体效率,跑报表、批那种更合适。

排序排序合并连接聚合函数这些操作,都是得把子步骤全跑完才能动父步骤。所以,如果你碰到这些场景,别犹豫,直接上all_rows。资源消耗会低不少。

有意思的是,实际执行时,操作不一定真是一条线排下来的。3、5、4 步一起跑,并行执行,效率更高。嗯,这就涉及到执行计划怎么看了。有时候你看着那种树状结构,其实根本看不出先后执行顺序,Oracle 还有一种更清晰的执行计划展示方式,后面会详细说。

如果你现在正陷在执行计划里看得云里雾里,建议你先把这篇文章读一遍,再顺着下面这几个链接点进去看看:

如果你是做前端开发但老得写 SQL,那建议你多关注下执行计划的阅读技巧,不然有时候性能掉坑了都不知道坑在哪儿。