SQL 性能差,80%都能靠改写 SQL 搞定。搞后端的你,多少得掌握点优化套路。

子查询换 Join,是老生常谈但实用的招。像你在WHERE里嵌个子查询,执行起来慢得,用JOIN反而响应也快,写起来也清晰不少。

绑定变量这个别小看,尤其是频繁执行的 SQL,绑定变量能让数据库复用执行计划,性能飙升一大截。比如WHERE id = ?这种,就比WHERE id = 123要聪明多了。

还有个坑蛮多人踩,就是在索引列上做计算或用 IS NULL,直接废掉索引了你知道吗?数据库得先计算完再查,效率就下来了。别小看这种小细节,能决定你系统撑不撑得住高并发。

SELECT *也别乱用,尤其在数据量大时。你只用两个字段,却查了全部,磁盘和网络都白白浪费了。用SELECT id, name不是更利索?

UNION ALL 比 UNION 快,因为前者不去重,适合你明确知道不会有重复数据的场景,节省不少计算资源。

顺便提一句,Oracle 优化器有 RBO 和 CBO 两种,CBO 比较智能,能根据代价自动选择执行计划。所以优化 SQL 时,表统计信息得保持准确。

如果你常常优化 SQL,建议把这些策略烂熟于心。更细的例子可以翻翻下面这些链接,都是干货。