Проблема создания эффективной хранимой процедуры при запросе большого количества строк - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь получить список лучших клиентов среди всех поставщиков, чтобы узнать, у кого из наших клиентов больше всего заказов. Проблема в том, что у нас такое большое количество записей, что хранимая процедура занимает слишком много времени, чтобы вернуть результаты.

Пожалуйста, помогите с любыми предложениями.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...