Задать вопрос

Оптимизация MySQL UPDATE

Всем добрый вечер! Помогите с такой проблемой. Есть таблица blank с такой структурой: id - AI seria - varchar(4) number - int(6) enabled - int(1) id_doc - int(4) id_user - int(3) fio_user - varchar(200) time - int(12) time_end - int(12)

В данный момент в таблице 10 000 записей (Каждый месяц прибавляется примерно 1500). Необходимо сделать UPDATE, сменить поле enabled с 1 на 0 у 1 000 записей. Пользователь вводит серию например SSSS и допустим номера 1-1000 я их разбираю, и циклом я иду по ним таким запросом: UPDATE blank SET enabled = '0', time_end = '$time' WHERE seria = '$seria' AND number = '$number_with_null' LIMIT 1 выполняется он несколько минут. Есть возможность как-то ускорить этот процесс? Заранее спасибо.

  • Вопрос задан
  • 3081 просмотр
Подписаться 2 Оценить 2 комментария
Решения вопроса 1
int03e
@int03e

UPDATE blank SET enabled=true WHERE seria='seria' AND number BETWEEN 1 AND 1000; Может как-то так? Не надо делать цикл с кучей запросов.

Ответ написан
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР

Скорее всего тормоза из-за дефолтных настроек движка InnoDB. Надо либо завернуть все запросы в транзакцию, либо сделать одним запросом, например так:


AND number = IN (....все номера...)

Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы