Как составить правильный Mysql запрос для обновления статистики всех статей с помощью group by?
Есть таблица nodes:
id, title, shows, clicks
- где shows и clicks - это общее число показов статьи во всех листингах
Есть таблица list_stats
id, title, node_id, shows, clicks
которая хранит статистику показов и кликов по статьям которые размещены в куче листингов
Вообщем моя задача заполнить поля shows, clicks для таблицы nodes суммируя соответствующие поля из таблицы list_stats, группируя по node_id.
Самое просто что пришло на ум это
update nodes
set nodes.shows = (select sum(shows) FROM list_stats where list_stats.node_id =node.id)
но этот запрос очень долгий на 10000 статей исполнялся 10 минут.
чую , что есть более красивый и быстрый запрос с использованием group by, но не хватает знаний...
цель получить запрос который будет исполнятся в пределах 1-2 секунд)
update nodes left join
(select node_id, sum(list_stats.shows) as totalshows group by node_id) as stats ON stats.node_id = nodes.id
set nodes.shows = ifnull(totalshows, 0)