Массовое изменение данных в таблице БД

У меня есть таблица в БД, со списком товаров, примерно 400к записей. В php у меня формируется из другого источника список идентификаторов товаров (кол-во может быть от 1 до до макс. кол. товаров в БД).

Нужно каким-то образом у всех товаров из БД, изменить значение одного поля, например сделать ACTIVE = 0, только для тех товаров, которых нет в моем массиве.

Какие есть способы?

Я предполагаю примерно так:

$arIds = []; // массив ID товаров, у которых не нужно менять активность

далее такой запрос:

'UPDATE `products` SET `ACTIVE`='0' WHERE `ID` not in (' . implode(', ', $arIds) . ')'

может ли такой вариант, из-за длинного SQL запроса (т.к. может быть список из 400к идентификарторов) быть ошибки ?

Или есть другие способы? Может нужно через chunk разбивать массив Id и по 1К изменять ?


Ответы (0 шт):