Оптимизация часто зависит от детального знания: 1. Структуры базы данных. 2. Данные в базе данных. 3. Назначение всех данных в базе данных. 4. Цель самого запроса. Просто сказать, что это «просто», не дает нам много информации.
Сказав это, подзапросы часто не очень хорошая идея, и в этом случае она не нужна. «Более простое» JOIN будет делать:
UPDATE Central.stg_roll_header AS stg
INNER JOIN roll_header_temp ON stg.id = roll_header_temp.id;
SET stg.is_updated = 'I'
См .: ОБНОВЛЕНИЕ MySQL JOIN
Это также можно записать как:
UPDATE Central.stg_roll_header AS stg, roll_header_temp
SET stg.is_updated = 'I'
WHERE stg.id = roll_header_temp.id;
Теперь Я не могу проверить это . Я даже не знаю значения полей, и, следовательно, это может вообще ничего не улучшить, но выглядит лучше.
Запросы часто можно улучшить, включив другие столбцы с индексом. Например, тот, который основан на времени. Простое добавление WHERE YEAR(roll_time) >= 2019
может значительно улучшить запрос. Но, как я уже сказал, у нас нет никакой информации, чтобы предложить такое улучшение.