У меня есть этот запрос, который возвращает топ-10 продаваемых продуктов, а также используется на главной странице:Кэш запросов MySQL для дорогих запросов?
SELECT a.id, a.title, SUM(b.sold) as 'sold' FROM products a
LEFT JOIN stock b ON b.product_id = a.id
GROUP BY a.id ORDER BY sold DESC LIMIT 10
Эта информация не должна быть актуальной - это нужно только обновить, возможно, один раз в день. Таким образом, у меня было два вопроса:
1) Учитывая, что это оценивает проданный СУММ каждого отдельного продукта (из таблицы запасов, где каждый продукт имеет несколько строк), является ли это вычислительно дорогостоящим запросом - точнее, . be, если это была большая база данных?
2) Может ли MySQL кэшировать этот запрос и обновлять его только один раз в день? Я знаю, что он имеет кэш запросов, который он использует по умолчанию, но согласно этому этот запрос будет признан недействительным каждый раз при изменении количества проданных предметов.
Я просто ищу способы быть более эффективными, если быть честным.
Что касается использования [Планировщика событий MySQL] (https://dev.mysql.com/doc/refman/5.7/en/event-scheduler.html) для обновления статической таблицы с результатами дорогого запроса, по расписанию? –