У меня есть запрос в 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 и EXPLAIN для них. Также 'LEFT JOIN sale ... WHERE sale' равна' INNER JOIN sale', так что вы можете так же написать этот бит для начала. – Strawberry
Индексирование на customer_id и дату. Что нужно от этого sql-запроса. Он должен дать продажи в прошлом месяце и продажи последнего в прошлом месяце против customer_id. нужно выяснить, делает ли клиент больше, чем в предыдущем месяце, если нет, то он не должен входить в этот список после того, как результат будет получен. – Dnyanesh
Улучшенный английский в ответе –