172 похожих чатов

Доброго времени суток. Подскажите, как лучше сделать групповой (батч) апсерт

в постгре?
Тобишь у меня есть набор данных, который я хочу вставить в БД, но если по ключу уникальности (в моем случае это несколько полей) уже лежат данные - то просто обновить ?

2 ответов

6 просмотров

Просто делаете обычный upsert (insert ... on conflict do update ...). Быстрее всего, думаю, будет просто пачку значений для insert в один запрос кинуть (несколько сотен или тысяч). Хотя тут ужэ можно поиграться -- сделать это жэ с выборкой из временной таблицы или сделать подготовленные запросы. Но не думаю, что такие игры что-то существенно ускорят.

Опять жэ, немого зависит от данных и таблиц. Если там много работы по переписыванию индэксов -- то ужэ будет неважно, хоть по одному INSERT делать. Если там три простых индэкса и пяток чисел -- то лучшэ будет подготовленный запрос (но всё равно с большым количество VALUES) или табличка, в которую сделали COPY. Ну, и на самом деле при большых размерах данных -- можно пытаться так или иначе делать индэксы "потом". Но если с таблицэй ещё что-то работает в процэссе -- то это сложно.

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

Обсуждают сегодня

Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Кстати а покупал кто-нибудь ЭЦП для подписи кода? А то у меня на некоторых компах и ОС иногда SmartScreen винды программу за вирус принимал. Если купить такую ЭЦП и подписыват...
Дмитрий Завгородний
15
Запускаю SIMD на Delphi 11 CE пишет: Exception class name: EJclError Exception message: Function not found: kernel32.dll.GetEnabledExtendedFeatures (0014763C){Jcl280.bpl } [7...
Александр Смоляков
10
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
10
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Hello, good time everyone I use Firebase to implement push notification inside the Flutter application and it works, but I don't receive the notification when the application ...
Iman
1
Вместо import и library придется писать importlib?
The Bird of Hermes
19
Вот такая неприятность на stable и ea версиях: werf helm --namespace s4c upgrade --install --atomic --timeout 5m --set s4c.version=839185f3 --set s4c.deployEnv=staging -f d...
citius
6
тут по sql есть спецы надеюсь есть таблица большая и там поле DATETIME TTIMESTAMP NOT NULL выборки будут по дням и нужен индекс... какой из индексов будет менее напряжным и ме...
Slym
9
какие есть варианты для чтения больших текстовых файлов кроме TBufferedFileStream?
zamtmn
12
Карта сайта