【发布时间】:2015-01-10 04:16:32
【问题描述】:
我有以下有效的代码:
SELECT admin_teams.name,
SUM(temp_orders.amount_paid) as amount,
SUM(instalments.amount) as amount2
FROM temp_orders
LEFT JOIN admin_teams
ON admin_teams.id = temp_orders.team
LEFT JOIN instalments
ON instalments.order_id = temp_orders.order_id
WHERE
(DATE(temp_orders.date_paid) = CURDATE()
OR DATE(instalments.date_paid) = CURDATE())
AND (temp_orders.pay_status = 4
OR instalments.pay_status = 4)
GROUP BY temp_orders.team
ORDER BY temp_orders.team ASC
LIMIT 5
它会生成一个如下所示的表格:
+-------------+--------+---------+
| name | amount | amount2 |
+-------------+--------+---------+
| team name 1 | 100 | 150 |
| team name 2 | 200 | 250 |
| team name 3 | 300 | 175 |
+-------------+--------+---------+
我有两个问题;
- 我实际上只想要一列,它是数量和数量2 的总和。
- 查询非常慢 - 这需要 190 秒才能运行。
我确实让它几乎与几乎即时的 Union 一起工作 - 但是我无法让它完全工作,因为我的第一个 select 语句中的列数与第二个中的列数不匹配 - 表“分期付款”确实没有团队列,但表 temp_orders 有。
任何人都可以帮助解决这两个问题吗?
谢谢。
【问题讨论】:
-
在查询前添加
EXPLAIN并运行它。使用结果编辑您的问题 -
一位朋友建议这样做,但显然服务器没有为 EXPLAIN 设置(我不明白为什么,显然某些东西没有安装或没有更新)而且我没有访问权限,或更新它的知识。
-
没听说过这种事,EXPLAIN自带mysql,不用更新什么的
-
好吧,星期一用一些示例数据编辑你的问题,也许是个小提琴并发表评论。
标签: mysql