самый быстрый способ вставки из таблицы в таблицу - PullRequest
0 голосов
/ 09 ноября 2019

Я обычно использую запрос ниже для вставки. но на этот раз я буду использовать этот запрос для 15 миллионов записей. Это очень медленно. Как я могу сделать это быстро.

Будут переданы только значения Id (Guid), Code (nvarchar) и пула (guid). Как вы видите, отдых по умолчанию.

Спасибо.

insert into collection
select Id,GETDATE(),GETDATE(),'00000000-0000-0000-0000-000000000000','00000000-0000-0000-0000-000000000000',Code,pool,1 from collectiontemp
where pool='0929B522-AF2A-4B36-xxxx-xxxxxxxxxxxx'

1 Ответ

0 голосов
/ 09 ноября 2019

Этот запрос в порядке:

insert into collection
    select Id, GETDATE(), GETDATE(), '00000000-0000-0000-0000-000000000000','00000000-0000-0000-0000-000000000000',
           Code, pool, 1
    from collectiontemp
    where pool = '0929B522-AF2A-4B36-xxxx-xxxxxxxxxxxx';

Нет очевидного способа ускорить его, кроме наличия индекса на collectiontemp(pool).

Однако, если вы вызов этого запроса 15 миллионов раз с различными значениями для pool, тогда это дорого! Чтобы загрузить всю таблицу, удалите предложение where:

insert into collection
    select Id, GETDATE(), GETDATE(), '00000000-0000-0000-0000-000000000000','00000000-0000-0000-0000-000000000000',
           Code, pool, 1
    from collectiontemp;

Если у вас есть несколько значений, перечислите их в одном запросе, используя IN:

insert into collection
    select Id, GETDATE(), GETDATE(), '00000000-0000-0000-0000-000000000000','00000000-0000-0000-0000-000000000000',
           Code, pool, 1
    from collectiontemp
    where pool in ( . . . );
...