我正在尝试获取所有供应商中最重要的客户的列表,以查看我们哪些客户的订单最多。问题在于我们有大量的记录,以至于存储过程花费的时间太长,无法返回结果。
请提供任何建议。
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