2013-04-11 3 views
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 чисел в таблицу, которая отлично работает, но не вставляет последовательно 1 к 1000000? как я могу вставить последовательно с быстрой скоростью вставки?Самый быстрый способ вставки чисел в таблицу серверов sql?

+0

Доза не вставляется или не отображается ?? – Freelancer

+3

Как вы подтверждаете, что это не последовательный? Вы выполняете 'SELECT num FROM dbo.NumberTest' без использования' ORDER BY'? –

+3

Поскольку таблицы имеют * не * присущий порядок, «последовательно» в лучшем случае не определен. Если в итоге вы получите таблицу, содержащую каждый из чисел от 1 до 1000000 включительно, один раз и только один раз, то запросы работают правильно. –

ответ

0

что я понял, что вам нужно добавить/вставить строки с порядковым номером от 1 до 10,00,000 (десяти лаковых строк)

ваших две команд, кажется, выберите команду вместо команды вставки

сделать действительно необходимую для добавить серийное поле номера в одном из ваших подал или вы можете запустить запрос к любой существующей таблице, чтобы получить результат с серийным номером, как

для например, имени таблицы: сотрудник поданного имя: Примечания: нет fileds е xisting как SerialNumber

вы можете запустить команду, чтобы получить выход с серийным номером

например выберите ROW_NUMBER() по (порядка по employee.name) как SerialNumber, Employee.name от сотрудника

вашего результата будет как

имя SerialNumber 1 а 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 
Смежные вопросы