#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. Жаль, что это не было «на порядки» быстрее. Возможно, нужно было обновить много строк.