Очень медленный запрос на внутреннее соединение

#mysql #performance

#mysql #Производительность

Вопрос:

Мне нужно оптимизировать этот запрос, чтобы он был быстрым (занимает около 10 минут).

 UPDATE year_2021 t1   INNER JOIN pricelist t2   ON t1.material = t2.material SET t1.rabat = t2.rs  

Таблица year_2021 содержит 30 тыс. строк, а прейскурант таблицы содержит 60 тыс. строк.

Это действительно нормально, этот запрос занимает 10 минут или он неправильный?

Спасибо!

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

1. Если это выполняется несколько раз в год и не вызывает никаких проблем, то я бы не стал тратить много времени на оптимизацию запроса. Если вы все еще хотите оптимизировать его, то вам нужно поделиться объяснением запроса и списком существующих индексов в обеих таблицах.

Ответ №1:

На pricelist у INDEX(material, rs)

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

1. Это наверняка ускорится, но указывайте дальше «pricelist.rs» также замедлит обновление — может быть, лучше пропустить это

2. @domi27 — Ускорение, обеспечиваемое моим индексом, будет на порядки больше, чем замедление из-за какого-либо другого индекса. (И индекс rs может быть полезен где-то еще; я не разбираюсь в этом.)

3. никаких сомнений и никакой критики не было .. просто комментарий 😉

4. Спасибо! От 10 минут это занимает всего 2 минуты! 🙂

5. Жаль, что это не было «на порядки» быстрее. Возможно, нужно было обновить много строк.