А что делать когда в бд нужно загрузить из к примеру файла эксель 100 000 строк с 50 столбцами, все данные + делать проверками к примеру на наличие записи? Сейчас это проходит больше чем за 10 - 20 минут.
Делить 100 000 на чанки, например по 200 записей, делать комбинированный запрос на связанный ID в БД используя оператор IN и получать уже существующие записи в БД, к примеру только их связующий ID.
Самим php проверять существование по уже загруженной записи и формировать 3 коллекции: INSERT, UPDATE, DELETE.
Далее в конце чанка делать по 1 запросу на каждое действие.
Таким образом всех видов запросов на чанк будет по примерно по 1шт.
SELECT - 1
INSERT - 1
UPDATE - 1
DELETE - 1
Делать комибинированный UPDATE изредка бывает сложно, так как необходимо использовать конструкцию CASE .. WHEN … THEN, но это в принципе неплохой вариант)). В противном случае можно делать множество UPDATE записей в LOW PRIORITY.