У меня очень большая база данных изображений, и мне нужно запустить обновление, чтобы увеличить количество просмотров изображений. Каждый час обновляется более миллиона уникальных строк. Сейчас для выполнения этого запроса требуется около часа. Есть ли способ запустить этот запрос быстрее?
Я создаю таблицу памяти:
CREATE TABLE IF NOT EXISTS tmp_views_table (
key VARCHAR(7) NOT NULL,
views INT NOT NULL,
primary key ( `key` )
) ENGINE = MEMORY
Затем я вставляю 1000 представлений одновременно, используя цикл, который выполняется, пока все представления не будут вставлены в таблицу памяти:
insert low_priority into tmp_views_table
values ('key', 'count'),('key', 'count'),('key', 'count'), etc...
Затем я запускаю обновление для фактической таблицы следующим образом:
update images, tmp_views_table
set images.views = images.views+tmp_views_table.views
where images.key = tmp_views_table.key
это последнее обновление занимает около часа, таблица памяти работает довольно быстро.
Есть ли более быстрый способ сделать это обновление?