【发布时间】:2017-03-25 19:23:56
【问题描述】:
我在 MySQL 中有以下查询。它显示mysql服务器消失了。查询有什么问题?
SELECT Customer.id,
Customer.first_name,
Customer.last_name,
Sum(Sale.`cal_qty`) AS totPurchase,
Sale2.tot2 AS totPurchase2
FROM `customers` AS Customer
LEFT JOIN `sales` AS Sale
ON Sale.customer_id = Customer.id
LEFT JOIN (SELECT s2.customer_id AS customer_id,
Sum(s2.cal_qty) AS tot2
FROM sales AS s2
WHERE s2.sale_date BETWEEN '2015-08-13' AND '2015-09-11'
GROUP BY s2.customer_id) AS Sale2
ON Sale.customer_id = Sale2.customer_id
WHERE Sale.sale_date BETWEEN '2015-09-12' AND '2015-10-12'
GROUP BY Sale.`customer_id`
请提出我可以对此查询进行的任何优化。它已经正确地索引了所需的列。
【问题讨论】:
-
请提供正确的 DDL 并解释。
LEFT JOIN sale... WHERE sale也等于INNER JOIN sale,所以你不妨这样写。 -
按 customer_id 和日期编制索引。这个 sql 查询需要什么。它应该根据 customer_id 给出上个月的销售额和上个月到上个月的销售额。需要判断客户是否比上个月做的多,如果没有,那么在获取结果后他不应该进入这个列表。
-
提高英语回答
标签: mysql optimization group-by