关于如何对以下查询进行t-sql编程的一个问题:
表1 我在一个有两列的表中插入400.000个移动电话号码。要插入的号码和身份ID。
表2 第二个表称为SendList。它是一个包含3列,标识ID,列表ID和phonenumberid的列表。
表3 被称为ListInfo并包含PK列表id。和关于清单的信息。
我的问题是我应该如何使用T-sql:
将带有phonenumbers的大型列表插入表1,插入生成的id来自phonenum的插入。在table1,表2中以优化的方式。它不能花很长时间,这是我的问题。
非常感谢有人可以指导我这个。
谢谢
塞巴斯蒂安
答案 0 :(得分:1)
您使用的是哪个版本的SQL Server?如果您使用的是2008,则可以使用OUTPUT子句插入多个记录,并将所有身份记录输出到表变量。然后,您可以使用它来插入子表。
DECLARE @MyTableVar table(MyID int);
INSERT MyTabLe (field1, field2)
OUTPUT INSERTED.MyID
INTO @MyTableVar
select Field1, Field2 from MyOtherTable where field3 = 'test'
- 显示表变量的结果集。
Insert MyChildTable (myID,field1, field2)
Select MyID, test, getdate() from @MyTableVar
我没有直接使用批量插入尝试此操作,但是您可以始终对一个临时表进行bulkinsert,然后使用上述过程。插入记录组比一次快得多。