MYSQL 如何优化LEFF JOIN多张表的查询效率

需求一个月内同一个name下面的SUM(x.eutra_fdd),篇幅只能放七天的,假如有三十天的表,有更好的办法吗?SELECTa.name,SUM(a.eutra_f... 需求一个月内同一个name下面的SUM(x.eutra_fdd),篇幅只能放七天的,假如有三十天的表,有更好的办法吗?
SELECT
a.name,
SUM(a.eutra_fdd),SUM(b.eutra_fdd),SUM(c.eutra_fdd),SUM(d.eutra_fdd),SUM(e.eutra_fdd),SUM(f.eutra_fdd),SUM(g.eutra_fdd)
from 201605010000 as a
LEFT JOIN 201605020000 as b
on a.name=b.name
LEFT JOIN 201605030000 as c
on a.name=c.name
LEFT JOIN 201605040000 as d
on a.name=d.name
LEFT JOIN 201605050000 as e
on a.name=e.name
LEFT JOIN 201605060000 as f
on a.name=f.name
LEFT JOIN 201605070000 as g
展开
 我来答
bhtzu
2016-06-23 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4247万
展开全部

你这个需求,就是N个表的各自SUM求和,无论用什么语句,从效率上是没法提高的,因为数据运算没法避免。

给你几个参考建议:

  1. 左连接是没有必要的,你需要的其实就是不同表各自的sum,应该各自查询就好了

  2. 分开语句写,语句更精简

  3. 这样的需求,最好使用存储过程和循环语句,在需求上可以更灵活,可以查询任意天数和任意起始日期的数据

  4. 当数据量很多(天数积累),并且查询比较频繁的时候,应该引入“中间表”或“临时表”,表中每条记录记录一天的sum值(可以通过存储过程或者定时任务维护),这样再次查询会更有效率。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式