我有3个表男孩女孩和关系,其中男孩和女孩r父表,其中thr主键是boy_id和girl_id(都是guids)。他们的映射是在关系表中完成的。其中每个映射集都是复合主键。
现在我想将所有这些表复制到另一个数据库(其中表名是man woman and affair,它们的结构类似于男孩,女孩和关系),table id将被转换为其他一些guid。
我所做的是 - 我创建了一个IDmapper表,在做任何事情之前,我将旧的guid和各自的新guid存储在一个表中。然后我用他们的新guid将数据从男孩复制到男人和女孩,再存储在IDmapper表中。后来我用下面的查询(1)和(2)来形成事件表。
男孩,男人,女人,女孩表具有以下结构 -
(col1 varchar(50) not null,col2 varchar(50) not null,primary key(col1));
Relationship,Affair和IDMapper(临时)表具有以下结构
(col1 varchar(50) not null,col2 varchar(50) not null,primary key(col1,col2));
以下是分别从男孩(选择),女孩(选择),Realtionship(jon)到Man(opt),Woman(opt),Affair(jon)的复制查询
Insert into IDMapper Select Boy_ID,Boy_ID+'XY' from Boy; --Generate new guid and store mapping into IDMApper
Insert into Man Select New_ID,BoyName from Boy join IDMapper on Old_ID=Boy_ID; -- Copy table data
Insert into IDMapper Select Girl_ID,Girl_ID+'XX' from Girl; --Generate new guid and store mapping into IDMApper
Insert into Woman Select Old_ID,GirlName from Girl join IDMapper on Old_ID=Girl_ID; -- Copy table data
(1)
Insert into Affair Select M.New_ID,F.New_ID from Relationship
join IDMapper M
on Boy_ID=M.OLD_ID
join IDMapper F
on Girl_ID=F.Old_ID;
(2)
Insert into Affair Select
(Select New_ID from IDMapper where Old_ID=R.Boy_ID),
(Select New_ID from IDMapper where Old_ID=R.GIRL_ID) from Relationship R;
在查询(1)和(2)中,哪一个更快,它们的时间复杂度是多少?
我必须假设关系表将保存3-4个表的映射信息。
请解释哪个查询更好,为什么?