这个SQL为何执行很慢?要3分钟左右才出来结果,有什么提高查询速度的写法吗?
select sum( case when c.nd='2012' then p.amount_sum else 0 end )年实际收购量 ,sum( case when c.nd='2012' then 1 else 0 end )年参与收购的站点数 ,sum( case when c.nd='2012' then s.buy_line_amount else 0 end )年参与收购的线数 ,sum( case when c.nd='2012' then s.buy_power else 0 end )年参与收购的线数的设计收购能力 from tb_yy_contract c join tb_yy_planter_sale_nd p on c.con_no=p.con_no join tb_yy_station s on c.sg_code=s.station_code
建议检查一下索引
nd 字段分区没
select sum( p.amount_sum )年实际收购量 ,sum( 1 )年参与收购的站点数 ,sum( s.buy_line_amount )年参与收购的线数 ,sum( s.buy_power else )年参与收购的线数的设计收购能力 from tb_yy_contract c join tb_yy_planter_sale_nd p on c.con_no=p.con_no join tb_yy_station s on c.sg_code=s.station_code
where c.nd='2012' 这样?
谢谢,但是查的不只是一年,我只是把其中的部分SQL放上来了,还有2013,2012,2011等等。。如果是这样写,就要union N年的数据了。。这样会不会更慢?
@hexllo:
最后 group by 一下c.nd
可以试着用nd分组后查询
贴出原SQL,和执行计划看看
加上查询条件。把你的表结构贴一下,执行计划。这样大家才好帮你分析啊!你的表,既然按照年查询,按年分区吧。