【发布时间】:2013-04-30 17:04:04
【问题描述】:
我正在尝试将 100,000,000 条基于坐标的简单记录插入到表中。有没有比下面的 t-sql 命令更快的方法来实现这一点
declare @x int
declare @y int
set @x = 0
set @y = 0
begin tran
while @x < 10000
begin
while @y < 10000
begin
insert into world (x,y) VALUES (@x,@y)
set @y = @y + 1
end
set @y = 0
set @x = @x + 1
end
commit tran
【问题讨论】:
-
您在外部文件中有这些坐标吗?您可以将其批量加载到临时表中......
-
我没有,但我怀疑创建文件所需的时间与上面的查询一样长。是时候进行实验了。
-
与 100,000,000 个单独的 INSERT 相比,使用 INSERT INTO SELECT 语法或 SELECT INTO 语法可能会更好。其中,我猜 SELECT INTO 可能会表现得更好。例如,请参阅here。
-
我看到您已经接受并接受了答案。但另一种选择可能是将 10000 行插入 #temp 并进行交叉连接。
-
我要去,你的工作很好,这是一次性的。我仍然对他的解决方案感兴趣,本周末会抽出一些时间来满足我的好奇心,运行一些基准测试。
标签: sql-server-2008 tsql