#node.js #typescript #express #sql-update #sequelize.js
Вопрос:
Я использую sequelize для обновления ~ 4000 строк, и для завершения требуется более 20 секунд. В идеале я бы создал массив с полями, которые меня интересуют, и использовал bulkCreate с updateOnDuplicate… но человек, реализующий это ранее, сказал, что он не может его использовать, так как вам нужен первичный ключ (или уникальное ограничение) в записях, которые вы передаете в bulkCreate. К сожалению, у нас здесь нет такой информации. Первый вопрос — нет ли другого способа, которым мы могли бы использовать bulkCreate с каким where
-либо предложением?
Поэтому сегодня я зацикливаюсь и звоню .update
(вводя обещания в массив и ожидая этого обещания.весь этот массив). В предложениях where выбираются другие 2 поля. Я честно удивлен, сколько времени это занимает (обновление 5 полей на 4000 записей). Я добавил индекс над 2 полями в предложении where (первое поле в индексе является выборочным), но он все еще работает медленно. Размер таблицы сегодня составляет всего около 8000 строк и около 15 столбцов.
Я не знаю, происходит ли медлительность от драйвера sequelize/database или от самой базы данных. Есть ли способ измерить это в моем приложении node express?
Мне интересно, какие еще существуют варианты. Будет ли выполнение всех обновлений в рамках одной транзакции здесь давать какие-либо преимущества в производительности (поля, которые я изменяю внутри обновления, меняются нечасто… так что не беспокойтесь о необходимости их блокировки).
Спасибо