Я пытаюсь написать код для пакетного импорта множества строк в базу данных.Моя инструкция по вставке/обновлению SQL слишком неэффективна
В настоящее время я массово копирую необработанные данные (из файла CSV) в промежуточную таблицу, так что это все на стороне базы данных. Это оставляет меня с промежуточным столом, полным строк, которые идентифицируют «контакты». Теперь их нужно переместить в другие таблицы базы данных.
Далее я копирую строки из промежуточной таблицы, которые у меня еще нет в таблице контактов, и для тех, которые у меня уже есть, мне нужно обновить столбец с именем «GroupToBeAssignedTo», что указывает на более позднюю операцию Я выйду.
У меня такое чувство, что я собираюсь сделать это неправильно. Запрос неэффективен, и я ищу совет, как я мог бы сделать это лучше.
update [t1]
set [t1].GroupToBeAssignedTo = [t2].GroupToBeAssignedTo from Contacts [t1]
inner join ContactImportStaging [t2] on [t1].UserID = [t2].UserID AND [t1].EmailAddress = [t2].EmailAddress AND [t2].GUID = @GUID
where not exists
(
select GroupID, ContactID from ContactGroupMapping
where GroupID = [t2].GroupToBeAssignedTo AND ContactID = [t1].ID
)
Может было бы лучше просто импортировать все строки без проверки дубликатов первым, а затем «чистый», данные после этого? Ищете предложения о том, где я ошибаюсь. Благодарю.
EDIT: Чтобы уточнить, вопрос касается MS SQL.