探讨一个多表插入的算法
假设有A、B、C三张表,表的数据结构相同。
再新建一个数据结构相同的表D,
然后把 A,B,C三张表的数据都插入到D中, 顺序是 A1,B1,C1;A2,B2,C2……
请问怎么最优化。
------解决方案--------------------說下想法:
將三個表的數據放入到三個臨時表中,並且都加上一個自增列。
然後將三個臨時表中的數據插入到D表中,按照自增列排序,這樣應該可以達到效果。
如果三個表的數據較多,生成臨時表可能會花些時間。
------解决方案--------------------将鱼的改改才行吧
Select ID = Identity(Int, 1, 3) , * Into #A From A
Select ID = Identity(Int, 2, 3) , * Into #B From B
Select ID = Identity(Int, 3, 3) , * Into #C From C
insert D select 不含id的列的列表
From
(Select * From #A
Union All
Select * From #B
Union All
Select * From #C) T
Order By ID
------解决方案----------------------union all里加编号排序
create table A(col1 int,col2 int,col3 int)
create table B(col1 int,col2 int,col3 int)
create table C(col1 int,col2 int,col3 int)
insert A select 1,2,3
union all select 4,5,6
insert B select 7,8,9
union all select 10,11,12
insert C select 13,14,15
union all select 16,17,18
select * into D from
(
select col1,col2,col3,bh=1 from A
union all
select col1,col2,col3,bh=2 from B
union all
select col1,col2,col3,bh=3 from C
)t
order by bh
select col1,col2,col3 from D
drop table A,B,C
col1 col2 col3
----------- ----------- -----------
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
16 17 18