Size: a a a

2020 April 29

K

Kostya in sql_ninja
Max Chistyakov
курсор не нужон
Можешь перед вставкой из жсона в финальную таблицу, вставлять записи из жсона во временную таблицу. Во время INSERT используешь опцию OUTPUT и записи из inserted вставляешь во вторую табличную п...

А бля, у тебя же вставка не прошла! Нет такого, чтобы часть строк в ОДНОМ интесрте вставилась, а часть нет. Либо все, либо не одна - атомарность же!
Все так, мать его, асид
источник

Дt

Дмитрий texnix 🇨🇳 in sql_ninja
и чем мерж то не устроит? ты же всё равно будешь по ключу сверять
источник

Дt

Дмитрий texnix 🇨🇳 in sql_ninja
мерж больше нихуя то и не будет нагружать таблицу, всё так же ключ сверять
источник

MC

Max Chistyakov in sql_ninja
Kostya
Все так, мать его, асид
а ты вставляешь явные значение в поля уникального ключа?
источник

В

Вячеслав in sql_ninja
проверить как работает output у мёржа при отсутствующем блоке when matched
источник

K

Kostya in sql_ninja
Max Chistyakov
а ты вставляешь явные значение в поля уникального ключа?
ага
источник

K

Kostya in sql_ninja
Дмитрий texnix 🇨🇳
и чем мерж то не устроит? ты же всё равно будешь по ключу сверять
по ключу будет БД сверять, не я
источник

K

Kostya in sql_ninja
на внутреннем уровне, он чутка быстрее отрабатывает, нежели селектом
источник

MC

Max Chistyakov in sql_ninja
Kostya
ага
тогда экспериментировать либо с мердж, либо с инсерт where not exists, какой стабильнее отработает
источник

MC

Max Chistyakov in sql_ninja
Max Chistyakov
курсор не нужон
Можешь перед вставкой из жсона в финальную таблицу, вставлять записи из жсона во временную таблицу. Во время INSERT используешь опцию OUTPUT и записи из inserted вставляешь во вторую табличную п...

А бля, у тебя же вставка не прошла! Нет такого, чтобы часть строк в ОДНОМ интесрте вставилась, а часть нет. Либо все, либо не одна - атомарность же!
возвращаясь к этому,  перед вставкой из жсона в финальную таблицу, вставлять записи из жсона во временную таблицу. Будет два запроса:
insert into final_table
select from ##temp_table
where ##temp_table.ID not in (select ID from final_table)


Второй будет такой же, только in вместо not in
источник

Дt

Дмитрий texnix 🇨🇳 in sql_ninja
not in (select ID from final_table) - вот эта хуйня пиздец медленная
источник

Дt

Дмитрий texnix 🇨🇳 in sql_ninja
по сравнению с мержем
источник

Дt

Дмитрий texnix 🇨🇳 in sql_ninja
если там будут миллиарды записей
источник

K

Kostya in sql_ninja
Max Chistyakov
возвращаясь к этому,  перед вставкой из жсона в финальную таблицу, вставлять записи из жсона во временную таблицу. Будет два запроса:
insert into final_table
select from ##temp_table
where ##temp_table.ID not in (select ID from final_table)


Второй будет такой же, только in вместо not in
да
или курсор на записи и при ошибке вставки по уникальному ключу вставка сразу в другую таблу
источник

K

Kostya in sql_ninja
Понял. коллеги. спасибо
источник

Дt

Дмитрий texnix 🇨🇳 in sql_ninja
exists и то быстрее
источник

MC

Max Chistyakov in sql_ninja
Дмитрий texnix 🇨🇳
not in (select ID from final_table) - вот эта хуйня пиздец медленная
нет медленного или не медленного. Всё зависит от количества данных, состояния индексов,  и прочего.
Если не отработал not in - пробуем not exists  с таким же логическим условием
источник

MC

Max Chistyakov in sql_ninja
Kostya
да
или курсор на записи и при ошибке вставки по уникальному ключу вставка сразу в другую таблу
ок
но курсор на записи в таблицу в дохулиард строк - это row-by-row, прям очень плохая практика
источник

K

Kostya in sql_ninja
Max Chistyakov
ок
но курсор на записи в таблицу в дохулиард строк - это row-by-row, прям очень плохая практика
в общем. там как
придет пакет 10-50 записей
вот по нему курсором и построчно в ту, где ахулиард, кто не вставился - в отдельную
источник

Дt

Дмитрий texnix 🇨🇳 in sql_ninja
источник