日期:2014-05-18  浏览次数:20540 次

大家帮忙优化一下这个查询语句。。
select     isnull(sum(sl),0)     as   sl,isnull(sum(dkje),0)   as   dkje,isnull(sum(gcts),0)   as   gcts,hzjxsdm     from          
          (select   isnull(count(hth),0)   as   sl,isnull(sum(-dkje),0)   as   dkje,isnull(sum(-gcts),0)   as   gcts,hzjxsdm   from   ht   where   yxbz= '0 '   and     convert(char(6),isnull(hzqxrq, ' '),112)= '200708 '   group   by   hzjxsdm        
      union   all        
          select   isnull(count(hth),0)   as   sl,isnull(sum(bgdkje),0)   as   dkje,isnull(sum(bgts),0)   as   gcts,jxsdm   as   hzjxsdm   from   htbgb   where     convert(char(6),isnull(bgsj, ' '),112)= '200708 '   group   by   jxsdm)   a          
        group   by   hzjxsdm  

怎么样优化这个查询。。把   union   all去掉!!只要一个查询语句

------解决方案--------------------
好乱
你不如把表结构写出来
然后说你要的效果.
------解决方案--------------------
两个查询组合成一个子查询,然后分组统计,没什么不好啊.

再说了,union all并不影响你的速度.
------解决方案--------------------
你把这段sql放到查询分析器里看看执行时间是多少,并且建议把第一行的isnull去掉,因为没有起作用,sql server处理null数据最耗费时间。