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

select*fromtablewhereidin(selectidfromtable1unionallselectidfromtable2)请问使用union替换uni... 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、有时候可能重复较少
选择一个最合理的方法,非常感谢
展开
 我来答
夜玄冬
2014-05-15 · 超过71用户采纳过TA的回答
知道小有建树答主
回答量:230
采纳率:100%
帮助的人:139万
展开全部
UNION ALL替换UNION性能更高.后者需要检查重复
数据量大的情况下group by性能更高,distinct需要读取所有列数据去重复,分组则不用.

另外:
数据量大,使用exists,而不是in.后者会对子查询中的表进行全表扫描,not in会执行一个内部的排序和合并,而前者只是检查存在性返回boolean.
避免使用'*'符号,因为会去获取所有列信息然后依次转化为所有的列名.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式