@MilezNoles

Как можно ускорить запрос UPDATE в MySQL?

Есть бд на 357751 строк, нужно сделать апдейт по всем строкам(UPDATE position SET allow = 'N' WHERE is_client IN ( 'Y', 'N' )). Изначально выполнялся за ~6.4 сек, убрав индекс allow, апдейт стал выполняться за 5.2 сек. Можно ли еще как то ускорить данный запрос? Таблица - MyISAM, индексов других аж 10 штук, но они не касаются полей которые в апдейте(allow я стер).
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ответы на вопрос 2
PageAuditRU
@PageAuditRU
Senior SEO Анализатор
В качестве эксперимента
UPDATE position SET allow = 'N' WHERE allow <> 'N' AND is_client IN ( 'Y', 'N' )
+ добавить спаренный индекс (allow, is_client)
Ответ написан
Spartak-2205
@Spartak-2205
Разработка и создание сайтов
1. Создать индекс для is_client
2. Заменить запрос на
UPDATE `position` SET `allow`='N' WHERE `is_client`='Y'
, если в поле is_client нет других значений кроме Y и N

P/S: сделайте проверку на дубликаты индексов, поверку на не используемые индексы
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы