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 操作符在实际场景下用得不多,性能也不算理想。碰到的话,能换成 AND、NOT 这种基础点的逻辑操作,基本都能优化出点东西来。你写多了 SQL,就知道,有时候换个表达法,查询就顺了。
如果你还不太熟这些对照转法,推荐你看看这几个文章:
如果你平时写 Oracle 或者 SQL 多,可以把这些小技巧整理成自己的一套写法模板,用的时候直接套,效率也高,bug 也少。