Я предполагаю, что это самый распространенный сценарий для всех, кто работает с SQL Server.
Сценарий:
У меня есть эти таблицы tabSRC_A(id,date,data1)
, tabSRC_B(id,Date,data2)
и tabDEST
Теперь моя задача - получить данные из tableSRC_A
, tableSRC_B
, применить к ним некоторую фильтрацию и очистку и вставить их в tabDEST
.
Я делаю это, используя следующий код
insert into tabDest(id, Date, Data1, Data2)
Select id, date, Data1, Data2
from tabSRC_A A
inner join tabSRC_B B on A.id = B.id and A.date = B.date
where not exists
(select * from tabDest Dest
where Dest.id = B.id and Dest.date = B.date)
и я обновляюсь, если уже существует
Это лучшее решение для этой операции?
Размер таблиц составляет 10 миллионов строк
Я также думал о создании представления с суррогатным ключом и выполнении проверки на основе идентификатора вместо проверки каждой строки с использованием вышеуказанного метода
как то так
insert into tabDest(id, Date, Data1, Data2)
Select id, date, Data1, Data2
from view_Created_From_TabA_TabB_adding_a_SurrogateKey_Kid SV
where SV.Kid > select (max(id) from tabDest)
Я предполагаю, что это будет намного быстрее.
Пожалуйста, направьте меня с любыми предложениями.
(я использую SQL Server 2000, я знаю, что он очень старый)