union all多表联合效率太低,请高手支招

logive 2012-11-05 05:26:36
四个子查询 结果集 用union all联合效率太低了花了4分钟
(select 1=3241条记录)union all
(select 2=1258条记录)union all
(select 3=1420条记录)union all
(select 4=19条记录)

效率太低了花了4分钟,请高手给个办法
...全文
5718 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mcgrady0314 2012-11-19
  • 打赏
  • 举报
回复
引用 楼主 logive 的回复:
四个子查询 结果集 用union all联合效率太低了花了4分钟 (select 1=3241条记录)union all (select 2=1258条记录)union all (select 3=1420条记录)union all (select 4=19条记录) 效率太低了花了4分钟,请高手给个办法
我觉得关键不是union all优化,而是从4条select优化
宋哥 2012-11-12
  • 打赏
  • 举报
回复
http://blog.csdn.net/iamlaosong/article/details/7061723
宋哥 2012-11-12
  • 打赏
  • 举报
回复
引用 2 楼 xpingping 的回复:
应该不是union all的问题吧!!! 应该从你的子查询入手吧!
看看你的子查询用多少时间吧。另外,你用了left join,如果表的记录很多的话,join后的记录也是很大的,建议用临时表或者用with Table as语句生成临时表后再join。
iihero_ 2012-11-11
  • 打赏
  • 举报
回复
select .... from A left join ( (select .... from B)B1 union all (select ... from C)C1 on B1.id=C1.id )B2 on A.id=B2.id 这个能执行吗? 尽量优化这一段。
ywjcool 2012-11-10
  • 打赏
  • 举报
回复
查询一中,如果表的结构很大(字段很多),仅拉出所需要的字段,另外就是通过加索引
ywjcool 2012-11-10
  • 打赏
  • 举报
回复
没明白楼主要干嘛,查询二的语法明显不对
logive 2012-11-06
  • 打赏
  • 举报
回复
重新描述下问题: -----------------------查询一---------------------- select .... from A left join B on A.id=B.id -----------------------查询二---------------------- select .... from A left join ( (select .... from B)B1 union all (select ... from C)C1 on B1.id=C1.id )B2 on A.id=B2.id 数据量:A=4百万条,B=5百万条,C=10条 这两个句子执行效率差别非常大: 查询一:15秒左右 查询二:3分种左右 请高手指点 有没有好的优化方法?
ywjcool 2012-11-05
  • 打赏
  • 举报
回复
你看看每个select花时多少吧,通过索引或优化子语句减少时间,union all并不花多少时间
xpingping 2012-11-05
  • 打赏
  • 举报
回复
应该不是union all的问题吧!!! 应该从你的子查询入手吧!
luoyoumou 2012-11-05
  • 打赏
  • 举报
回复
就这么点数据,还有啥好支招的? 尽量让每个子查询走索引呗!

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧