将数字插入sql server表的最快方法?

时间:2013-04-11 06:36:30

标签: sql sql-server sql-server-2008

SELECT TOP 1000000 row_number() over(ORDER by sv.number) AS num
INTO numbertest
from master..spt_values sv CROSS JOIN master..spt_values sv2


SELECT TOP 1000000 IDENTITY(int,1,1) AS Number
    INTO NumberTest
    FROM master..spt_values sv1
    CROSS JOIN master..spt_values s2

我遇到过两种在表中插入1到1000000个数字的方法,这些方法可以完美地工作但不会顺序插入1到1000000个?如何以快速插入率顺序插入?

2 个答案:

答案 0 :(得分:0)

我的理解你需要添加/插入序列号为1到10,00,000(十个lac行)的行

你的两个命令似乎是select命令而不是insert命令

确实需要在您的某个字段中添加序列号字段 要么 您可以对任何现有表运行查询以获得序列号的结果,如

例如,表名:employee         提交名称:名称               注意:没有像SerialNumber

那样存在的文件

您可以运行命令以获取序列号

的输出

e.g。选择ROW_NUMBER()结束(按employee.name排序)作为SerialNumber,Employee.name来自员工

你的结果就像

SerialNumber名称 1 abc 2 xyz

答案 1 :(得分:0)

我的数据库中有表格号码,我填写了以下查询。

CREATE TABLE [dbo].[NUMBERS] (
    [number] INT IDENTITY (1, 1) NOT NULL
);

set Identity_insert dbo.Numbers oN

declare 
  @row_count int,
  @target_rows int

set @target_rows  = 1048576
set @row_count    = null

while ( 1 = 1 ) begin
  if ( @row_count is null ) begin
    insert into Numbers ( [number] ) values ( 1 )
  end
  else begin
    insert into Numbers ( [number] ) 
    select [number] = [number] + @row_count
    from Numbers
  end

  set @row_count = isnull( @row_count, 0 ) + @@rowcount

  if ( @row_count >= @target_rows ) begin
    break  
  end
end