oracle查询in中有重复数据是否对性能有较大影响

select * from table where id in (
select id from table1

union all
select id from table2
)
请问使用union替换union all性能更高还是
子查询使用group by性能更高
还是子查询使用distinct关键字性能更高
还是这样子性能更高

麻烦结合一下因素1、有时候重复较多的情况 2、有时候可能没有重复 3、有时候可能重复较少
选择一个最合理的方法,非常感谢

UNION ALL替换UNION性能更高.后者需要检查重复
数据量大的情况下group by性能更高,distinct需要读取所有列数据去重复,分组则不用.

另外:
数据量大,使用exists,而不是in.后者会对子查询中的表进行全表扫描,not in会执行一个内部的排序和合并,而前者只是检查存在性返回boolean.
避免使用'*'符号,因为会去获取所有列信息然后依次转化为所有的列名.
温馨提示:答案为网友推荐,仅供参考
相似回答