0
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 の数字を挿入する 2 つの方法に遭遇しましたが、これは完全に機能しますが、1 ~ 1000000 を順番に挿入しませんか? 速い挿入速度で順番に挿入するにはどうすればよいですか?

4

2 に答える 2

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
于 2013-04-11T07:12:58.470 に答える