Иерархическая копия данных - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть главная таблица, как показано ниже в родительских и дочерних отношениях, имеющая более 2000 записей

Имя таблицы: MasterTable

Id     ReqId       Title                  ParentId
---------------------------------------------------
1      AC1.        Account Control.       null
2      Ac1-1.      account c.             1
3      Ac1-1-1.    account c.             2

Другая таблица - это дочерняя таблица, в которую мне нужно скопировать данные вта же иерархия, что и ниже

TableName: ChildTable (образец данных после копирования)

Id     ReqId             Title                  ParentId    MasterTableId
--------------------------------------------------------------------
101    AC1.              Account Control.       null           1
102    Ac1-1.            account c.             101            2
103    Ac1-1-1.          account c.             102            3

Сначала я вставил данные, используя оператор вставки в оператор ... select, затем обновил идентификатор родителя.используя соединение с главной таблицей и самостоятельное соединение, но для обновления этого запроса требуется 2 -5 секунд.

Я использовал следующий запрос для обновления родительского идентификатора

insert into ChildTable(ReqId,Title,ParentId,MasterTableId) 
select ReqId,Title,null,Id from MasterTable

После вставки я обновляюродительский идентификатор дочерней таблицы

UPDATE TSR1
set ParentId = TSR2.Id
from ChildTable TSR1 
JOIN MasterTable SR ON TSR1.MasterTableId = SR.Id
JOIN ChildTable TSR2 ON TSR2.MasterTableId = SR.ParentId
WHERE SR.ParentId IS NOT NULL

Может кто-нибудь предложить эффективный запрос для копирования данных выше?

...