История изменений
Исправление masa, (текущая версия) :
Можно создать Materialized view, они сделаны как раз для таких случаев, когда долгий запрос надо регулярно обновлять
Упс, в mysql похоже нет встроенного механизма матвью, но вот тут https://fromdual.com/mysql-materialized-views есть пример процедуры, в транзакции делается truncate и insert, проблем с отсутствием данных или дублями не будет
DROP PROCEDURE refresh_mv_now;
DELIMITER $$
CREATE PROCEDURE refresh_mv_now (
OUT rc INT
)
BEGIN
TRUNCATE TABLE sales_mv;
INSERT INTO sales_mv
SELECT product_name
, SUM(product_price), SUM(product_amount)
, AVG(product_price), AVG(product_amount)
, COUNT(*)
FROM sales
GROUP BY product_name;
SET rc = 0;
END;
$$
DELIMITER ;
Исходная версия masa, :
Можно создать Materialized view, они сделаны как раз для таких случаев, когда долгий запрос надо регулярно обновлять