在父子关系中,我有一个如下所示的主表,记录超过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
我尝试过的方法是先使用insert into ... select语句插入数据,然后使用与主表和自连接的联接更新父ID,但是此查询需要2 -5秒的时间来更新。
我已经使用以下查询来更新父ID
insert into ChildTable(ReqId,Title,ParentId,MasterTableId)
select ReqId,Title,null,Id from MasterTable
插入后,我正在更新子表的父ID
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
有人可以建议对上述数据复制进行有效的查询吗?