oracle left outer join 子查询,LEFT JOIN优化多个子查询

本文探讨了如何优化Oracle数据库中的LEFT JOIN子查询,通过合并多个子查询和使用CASE WHEN,显著提高了查询效率。举例说明了将多个子查询转换为LEFT JOIN的方式,以及解决重复子查询的方法,以提升SQL查询性能。
摘要由CSDN通过智能技术生成

1.SQL1

OLD:

SELECT COUNT (1) num

FROM (  SELECT t1.*

FROM t_asset t1

WHERE     1 = 1

AND t1.TYPE = 0

AND (   t1.status IN (1,

10,

11,

12,

100)

OR (EXISTS

(SELECT b.resource_id

FROM t_asset_file b

WHERE     t1.resource_id = b.asset_code

AND t1.status IN (3, 4, 8)

AND b.status IN (1,

10,

11,

12))))

AND (   EXISTS

(SELECT 1

FROM t_asset_file a1

WHERE     t1.resource_id = a1.asset_code

AND (   a1.content_status = 1

OR a1.content_status = 4))

OR NOT EXISTS

(SELECT 1

FROM t_asset_file a1

WHERE t1.resource_id = a1.asset_code))

ORDER BY t1.create_time DESC, t1.resource_id) a;

优化方向: 合并多个t_asset_file子查询

优化方法: 使用left join 来代替子查询,把关联列放在g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值