有个三个表 A ,B ,C
A 表 10万条记录
B 表 20万条记录
C 表 100万条记录A表 (产品表) PRIMARY(id)
id name
编号 名称
B表 (库存表) PRIMARY(year,month,bmh,id) 索引(id)
id year month bmh kcsl
编号 年 月 部门号 库存数量
C表 (销售记录表) PRIMARY(rq,bmh,id) 索引(id)
id rq bmh sell
编号 日期 部门号 销售数量
功能:更具A(产品表)列出 库存数量 和 销售数量的对比
如:查询条件
1.库存账为 2012年06月
2.销售时间为 2012-06-01 至 2012-06-30
3.部门号为 001查询结果例如:
id name kcsl sell
1001 苹果 10 3
1002 香蕉 0 1
1003 西瓜 0 0
1004 桃子 5 0
.
.
.
.本人测试了多种写法,查询速度都在几分钟以上,请教这个多表连接的查询语句该如何写,或有什么更好的建议!谢谢
A 表 10万条记录
B 表 20万条记录
C 表 100万条记录A表 (产品表) PRIMARY(id)
id name
编号 名称
B表 (库存表) PRIMARY(year,month,bmh,id) 索引(id)
id year month bmh kcsl
编号 年 月 部门号 库存数量
C表 (销售记录表) PRIMARY(rq,bmh,id) 索引(id)
id rq bmh sell
编号 日期 部门号 销售数量
功能:更具A(产品表)列出 库存数量 和 销售数量的对比
如:查询条件
1.库存账为 2012年06月
2.销售时间为 2012-06-01 至 2012-06-30
3.部门号为 001查询结果例如:
id name kcsl sell
1001 苹果 10 3
1002 香蕉 0 1
1003 西瓜 0 0
1004 桃子 5 0
.
.
.
.本人测试了多种写法,查询速度都在几分钟以上,请教这个多表连接的查询语句该如何写,或有什么更好的建议!谢谢
解决方案 »
- mysql 中怎么样添加一个字符+时间自动生成的编号???
- mysql命令里建立一个新数据库并加上用户名和密码如何写
- mysql很慢不知道为什么?才1.5w的数据就跑了3分钟,而且我加了索引啊~有图麻烦大家帮忙看看啊~
- mysql 6 连不上
- 运维和我说mysql里字段必须全都要设置为非空,这个谁能帮忙解释解释呢
- PostgreSQL 中怎样生成 Sequence?
- 建议
- 请问这个简单的SQL语句怎样写?
- 如何在mysql中查看存入的文件或图片
- mysqldump 导出的存储过程 的问题
- 用mysqldump备份完数据库后如何处理ibdata1文件
- mysql中因文本太长,无法插入数据如何解决?求高手指点
select d.id,d.kcsl ,e.sell from (select a.id , b.kcsl from a left outer join b on a.id = b.id and b.year='2012' and b.month='06' and b.bmh='001') d left outer join (select c.id, sum(c.sell) from c where c.rq between '2012-06-01' and '2012-06-30' and c.bmh='001' group by c.id) e on d.id= e.id
explain select d.id,d.kcsl ,e.sell
from (select a.id , b.kcsl from a left outer join b on a.id = b.id and b.year='2012' and b.month='06' and b.bmh='001') d
left outer join
(select c.id, sum(c.sell) from c where c.rq between '2012-06-01' and '2012-06-30' and c.bmh='001' group by c.id) e
on d.id= e.id
及 show index from ... 以供分析。