ALL 操作符的 SQL 优化技巧,蛮实用的一个点。平时你写条件语句时,如果碰到 ALL 操作符,其实可以稍微动动手,把它换成更好理解、更好执行的方式。像 sal > ALL (:first_sal, :second_sal) 这种,就可以直接拆成 sal > :first_sal AND sal > :second_sal,执行效率会高不少。

跟子查询搭配用 ALL 的时候,也能优化一下。比如 x > ALL (SELECT sal FROM emp WHERE deptno = 10),可以换成 NOT (x <= ANY (...)) 这样的写法,意思没变,但数据库会跑得更快。

说白了,ALL 操作符在实际场景下用得不多,性能也不算理想。碰到的话,能换成 ANDNOT 这种基础点的逻辑操作,基本都能优化出点东西来。你写多了 SQL,就知道,有时候换个表达法,查询就顺了。

如果你还不太熟这些对照转法,推荐你看看这几个文章:

如果你平时写 Oracle 或者 SQL 多,可以把这些小技巧整理成自己的一套写法模板,用的时候直接套,效率也高,bug 也少。