СКОРОСТЬ обновления запросов в SQL

#sql-update #mariadb-10.4

Вопрос:

Выполнение следующего запроса занимает 31 минуту. Energydata содержит 2,5 миллиона записей, seasons-730 записей, сайты-35 записей. Индекса по месяцу дню нет, но я подумал, что, учитывая, что ПРАВИЛЬНЫЕ таблицы крошечные, это не должно иметь большого значения.

Может ли кто-нибудь объяснить, почему это занимает так много времени, и предложить способ ускорить это?

 update energydata e
JOIN seasons s
ON e.hemi=s.hemi
AND MONTH(e.eTimestamp)=MONTH(s.date)
AND DAY(e.eTimestamp)=DAY(s.date)
SET e.season=s.season; 
 

Следующий метод занимает всего 16 минут (что все еще слишком долго для быстрого corei5 9-го поколения с SSD).:

 update energydata e 
SET season= (SELECT season FROM seasons s 
WHERE MONTH(e.eTimestamp)=MONTH(s.date) 
AND DAY(e.eTimestamp)=day(s.date) 
AND e.hemi=s.hemi);
 

Кроме того, почему объединение выполняется медленнее, чем метод select? Я думал, что ПРИСОЕДИНИТЬСЯ будет быстрее.

Комментарии:

1. Я использую MariaDB 10.4