У меня есть главная таблица, как показано ниже в родительских и дочерних отношениях, имеющая более 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
Может кто-нибудь предложить эффективный запрос для копирования данных выше?