日期:2014-05-19  浏览次数:20516 次

探讨一个多表插入的算法
假设有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