select * from (
select sum(jyje) total_je,xh,xm,xbdm,bjmc,yxmc,zymc from
(
select t.xh,t.xm,t.xbdm ,m.jyrq,m.jyje,t.bjmc,t.yxmc,t.zymc
from v_xs_bzksjbxx t,v_ykt_tjxx m where t.xh=m.xh and to_char(jyrq,'yyyy-MM')<='2009-08' and to_char(jyrq,'yyyy-MM')>='2008-09'
and 1=1 group by (t.xh,t.xm,t.xbdm ,m.jyrq,m.jyje,t.bjmc,t.yxmc,t.zymc)
) group by (xh,xm,xbdm,bjmc,yxmc,zymc)
) where total_je >200
这个语句查询的数据不是很多,但是v_ykt_tjxx中数据至少有26万多数据,并且一直会增加,如何优化这个sql语句,还望大家给点意见,很急。
有关sql的优化
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- lggegegmail 2009-05-09 02:06关注
你的SQL可以简化,不需要两层group by
[code="sql"]select *
from (--select sum(jyje) total_je, xh, xm, xbdm, bjmc, yxmc, zymc
--from (
select t.xh,
t.xm,
t.xbdm,
--m.jyrq,
sum(m.jyje) total_je,
t.bjmc,
t.yxmc,
t.zymc
from v_xs_bzksjbxx t, v_ykt_tjxx m
where t.xh = m.xh
and to_char(jyrq, 'yyyy-MM') <= '2009-08'
and to_char(jyrq, 'yyyy-MM') >= '2008-09'
and 1 = 1
group by (t.xh, t.xm, t.xbdm, --m.jyrq, m.jyje,
t.bjmc, t.yxmc, t.zymc)--)
--group by (xh, xm, xbdm, bjmc, yxmc, zymc)
)
where total_je > 200[/code]本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 c程序不知道为什么得不到结果
- ¥40 复杂的限制性的商函数处理
- ¥15 程序不包含适用于入口点的静态Main方法
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置