请高手帮我加快SQL语句,具体如下:
我要做一个库存统计报表,报表中出库要求分部门列出,如:
自编码 期初 入库 出库(合计) 部门01(出库) 部门02 部门03 ... 期末结存
我用了如下SQL语句:
select kc.zth,kc.kjq,kc.cbm,kc.qc,kc.rk,kc.ck,
(select sum(ckdview.sl) from ckdview where ckdview.zth=kc.zth and ckdview.kjq=kc.kjq and ckdview.cbm=kc.cbm and ckdview.bm='01'),
(select sum(ckdview.sl) from ckdview where ckdview.zth=kc.zth and ckdview.kjq=kc.kjq and ckdview.cbm=kc.cbm and ckdview.bm='02'),
...
(select sum(ckdview.sl) from ckdview where ckdview.zth=kc.zth and ckdview.kjq=kc.kjq and ckdview.cbm=kc.cbm and ckdview.bm='15') from kc;
结果查询1个月的数据需要54秒钟(约三万条记录),9个月数据需要8分钟!
我要做一个库存统计报表,报表中出库要求分部门列出,如:
自编码 期初 入库 出库(合计) 部门01(出库) 部门02 部门03 ... 期末结存
我用了如下SQL语句:
select kc.zth,kc.kjq,kc.cbm,kc.qc,kc.rk,kc.ck,
(select sum(ckdview.sl) from ckdview where ckdview.zth=kc.zth and ckdview.kjq=kc.kjq and ckdview.cbm=kc.cbm and ckdview.bm='01'),
(select sum(ckdview.sl) from ckdview where ckdview.zth=kc.zth and ckdview.kjq=kc.kjq and ckdview.cbm=kc.cbm and ckdview.bm='02'),
...
(select sum(ckdview.sl) from ckdview where ckdview.zth=kc.zth and ckdview.kjq=kc.kjq and ckdview.cbm=kc.cbm and ckdview.bm='15') from kc;
结果查询1个月的数据需要54秒钟(约三万条记录),9个月数据需要8分钟!
解决方案 »
- 请大家进来看看结果为何有差别,用hibernate连oracle10g进行查询的4种写法
- plsql存储过程显示返回值
- ORACLE自动导出表到EXCEL
- 新手请教Oracle连接问题!
- oracle存储过程参数为blob类型 遇到参数大小问题
- 数据库设计问题
- 用户权限问题
- 请教:sql server中解决与关键字冲突使用的是中括号,那oracle中使用什么解决这个问题?
- 怎样使用exp和imp备份和恢复数据库,表和用户,请高手指点!!
- 在软件开发中能够做到完全使用标准sql吗?
- 在Powerbuilder里如何获得oracle的函数返回值?
- 高分急求修改shard_pool_size问题!!!
sum(decode(b.bm,'01',ckdview.sl,0)) aa,
sum(decode(b.bm,'02',ckdview.sl,0)) aa1,
....
sum(decode(b.bm,'15',ckdview.sl,0)) aa15 from kc a ,ckdview b
where a.zth=b.zth and a.kjq=b.kjq and a.cbm=b.cbm and
(b.bm='01' or b.bm='02' or b.bm='15' ) ;
相应的字段建立上索引