关于非相关子查询改写经验最近又又又再项目中遇到这样奇奇怪怪的写法计划: 从计划上看只能做非相关子查询,即每次获取主查询一条记录去子查询根据条件判断过滤获取结果。为什么会这样?原因是因为exists中select存在主查询条件作为查询项得出结果后还要通过where去过滤,因此只能主查询一条一条去判断,主查询数据量增加,效率急剧下降。这种写法需要转换成相关子查询,即做成相关关联,将子查询做成结果集与主查询关联。 思路拆解 获取子查询结果集, 子查询查询项 sum(sum(t3.ll*0.5)+nvl(max(t2.ll),0)) o