Я пытаюсь получить список лучших клиентов среди всех поставщиков, чтобы узнать, у кого из наших клиентов больше всего заказов. Проблема в том, что у нас такое большое количество записей, что хранимая процедура занимает слишком много времени, чтобы вернуть результаты.
Пожалуйста, помогите с любыми предложениями.
CREATE DEFINER=`rapidws`@`%` PROCEDURE `Rapidtrade`.`Question1`()
BEGIN
DROP TEMPORARY TABLE IF EXISTS temp_orders;
CREATE TEMPORARY TABLE temp_orders Engine=Memory as(
SELECT
a.AccountID AS Account,
a.Name AS Customer_Name,
COUNT(o.OrderID) AS TotalOrders,
0 AS TotalActivities,
0 AS SubTotal,
0 AS MonthAgo
FROM
Account a
RIGHT OUTER JOIN
Orders o ON o.AccountID = a.AccountID
WHERE
o.CreateDate > TIMESTAMPADD(HOUR, - 1, NOW())
GROUP BY o.AccountID
ORDER BY TotalOrders DESC
LIMIT 20);
SELECT * FROM temp_orders;
END