LINUX.ORG.RU

История изменений

Исправление 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, они сделаны как раз для таких случаев, когда долгий запрос надо регулярно обновлять