
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