oracle 优化or 更换in、exists、union all几个字眼

时间:2023-03-08 21:33:01
oracle 优化or 更换in、exists、union all几个字眼

oracle 优化or 更换in、exists、union几个字眼。测试没有问题!

根据实际情况选择相应的语句是。假设指数,or全表扫描,in 和not in 应慎用。否则会导致全表扫描。

 select *
   from T_Pro_Product
  where bar_code = 'nnnmmm'
     or name = 'nnnmmm'
     or no = 'nnnmmm'; select *
from T_Pro_Product
where 'nnnmmm' in (bar_code, name, no) --忧化
select *
from T_Pro_Product t1
where exists
(select 1
from T_Pro_Product tt1
where t1.bar_code = 'nnnmmm'
union all
select 1
from T_Pro_Product tt2
where t1.no = 'nnnmmm'
union all
select 1 from T_Pro_Product tt3 where t1.name like 'n%') --忧化
select *
from T_Pro_Product t1
where t1.id in (select id
from T_Pro_Product tt1
where t1.bar_code = 'nnnmmm'
union all
select id
from T_Pro_Product tt2
where t1.no = 'nnnmmm'
union all
select id
from T_Pro_Product tt3
where t1.name = 'nnnmmm') 来源:http://www.cnblogs.com/yxwkf/p/4602143.html