四个子查询 结果集 用union all联合效率太低了花了4分钟
(select 1=3241条记录)union all
(select 2=1258条记录)union all
(select 3=1420条记录)union all
(select 4=19条记录)效率太低了花了4分钟,请高手给个办法

解决方案 »

  1.   

    应该不是union all的问题吧!!!
    应该从你的子查询入手吧!
      

  2.   

    你看看每个select花时多少吧,通过索引或优化子语句减少时间,union all并不花多少时间
      

  3.   

    重新描述下问题:
    -----------------------查询一----------------------
    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分种左右请高手指点 有没有好的优化方法?
      

  4.   

    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
    这个能执行吗?尽量优化这一段。
      

  5.   

    看看你的子查询用多少时间吧。另外,你用了left join,如果表的记录很多的话,join后的记录也是很大的,建议用临时表或者用with Table as语句生成临时表后再join。
      

  6.   

    http://blog.csdn.net/iamlaosong/article/details/7061723
      

  7.   

     我觉得关键不是union all优化,而是从4条select优化