请问一条sql语句的优化?
请教一条sql语句的优化??
select 编号,日期,单价,合计
from 商品供销统计 where jzrq >= '2011-7-1' and jzrq < '2012-1-1' and
编号 in (select 编号 from 商品信息 where 店面编号 in
(select 店面编号 from 店面信息 where 城市代码=1))
order by 编号,日期
以上语句的目标是要查询某个城市的所有商品销售和供货情况,由于数据量巨大,执行时间要20多秒,我将两个"in"改成“exists”后结果输出了所有城市的商品供销记录,速度却比没改之前还快。。请问大大们有更好的查询方式吗?
------解决方案--------------------
select 编号,日期,单价,合计
from 商品供销统计 where jzrq >= '2011-7-1' and jzrq < '2012-1-1' and
编号 in (select 编号 from 商品信息 where 店面编号 in
(select 店面编号 from 店面信息 where 城市代码=1))
order by 编号,日期
以上语句的目标是要查询某个城市的所有商品销售和供货情况,由于数据量巨大,执行时间要20多秒,我将两个"in"改成“exists”后结果输出了所有城市的商品供销记录,速度却比没改之前还快。。请问大大们有更好的查询方式吗?
------解决方案--------------------
- SQL code
select a.编号,a.日期,a.单价,a.合计 from 商品供销统计 a,商品信息 b,店面信息 c where a.jzrq >= '2011-7-1' and a.jzrq < '2012-1-1' and a.编号=b.编号 and b.店面编号=c.店面编号 and c.城市代码=1 order by a.编号,a.日期
------解决方案--------------------
试试:
- SQL code
select a.编号,a.日期,a.单价,a.合计 from 商品供销统计 a inner join 商品信息 b on a.编号=b.编号 inner join 店面信息 c on b.店面编号=c.店面编号 where a.jzrq >= '2011-7-1' and a.jzrq < '2012-1-1' and c.城市代码=1 order by 编号,日期
------解决方案--------------------
- SQL code
select a.编号,a.日期,a.单价,a.合计 from 商品供销统计 a join 商品信息 b on a.编号=b.编号 join 店面信息 c on b.店面编号=c.店面编号 where a.jzrq >= '2011-7-1' and a.jzrq < '2012-1-1' and c.城市代码=1 order by a.编号,a.日期
------解决方案--------------------
- SQL code
select a.编号,a.日期,a.单价,a.合计 from 商品供销统计 a inner join 商品信息 b on a.编号=b.编号 inner join 店面信息 c on b.店面编号=c.店面编号 where a.jzrq >= '2011-7-1' and a.jzrq < '2012-1-1' and c.城市代码=1 order by a.编号,a.日期