消息关闭
    暂无新消息!

简单的SQL优化 求指教

问题作者 : 小方2017-08-26发布
select a.nd,
       round(sum(nvl(a.xzgdmj, 0)) * 15 / 10000, 4) xzgdmj,
       round(sum(nvl(b.gdmj, 0)) * 15 / 10000, 4) gdmj
  from zhjg_tdzz a

  left join zhjg_jsydbp_pc b
    on a.xzqdm = b.xzqdm

 group by a.nd
 order by a.nd

两张表数据太多,查询速度很慢

怎么优化一下

4个回答

︿ 2
这个查询列上应该有索引的吧,如果表太大的话,感觉你的过滤条件必须更加精细才可以控制,否则这个sql已经是最简单的了,没办法优化了
︿ 1
发现你连接两张表时
表a有 :nd、 xzgdmj、 xzqdm 
表b有: xzqdm、 gdmj
所以你在连接前先 (select  nd,xzgdmj, xzqdm from zhjg_tdzz ) as a  
                               left join .....
必然可以减少查询数据从而减少查询时间。

当然楼上的建议也很重要
︿ 0
一是建立索引;
二、sum(nvl(a.xzgdmj, 0) 和sum(nvl(b.gdmj, 0) 没必要,直接sum(a.xzgdmj)和sum(b.gdmj)即可。