SQL Server 2014. Параллельное выполнение SELECT INTO

SQL Server 2014. Параллельное выполнение SELECT INTOАвтор: Alexey Knyazev

Теперь мы можем ускорять выполнение SELECT INTO благодаря распараллеливанию.

Демонстрация:

 

SQL Server 2012

Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
    Dec 28 2012 20:23:12
    Copyright (c) Microsoft Corporation
    Enterprise Edition (64-bit) on Windows NT 6.1 
         (Build 7601: Service Pack 1)

SQL Server 2014 CTP1

Microsoft SQL Server 2014 (CTP1) - 11.0.9120.5 (X64)
    Jun 10 2013 20:09:10
    Copyright (c) Microsoft Corporation
    Enterprise Evaluation Edition (64-bit) on Windows NT 6.1 
         (Build 7601: Service Pack 1)

На обоих версиях создадим таблицу dbo.test_table и наполним тестовыми данными (65536 записей)

set nocount on;
go

if object_id( N'dbo.test_table', N'U' ) is not null
drop table dbo.test_table;
go

create table dbo.test_table
      ( id     int primary key
      , dt     datetime default getdate()
      , uniqid uniqueidentifier default newid()
      , val    nvarchar(1024) default replicate( 'A', 1024 )
      );
go

with
  cte1 as ( select t1.* from ( values(1),(1) ) t1(i) )
, cte2 as ( select t2.* from cte1 t1 cross join cte1 t2 )
, cte3 as ( select t3.* from cte2 t2 cross join cte2 t3 )
, cte4 as ( select t4.* from cte3 t3 cross join cte3 t4 )
, cte5 as ( select t5.* from cte4 t4 cross join cte4 t5 )
insert into dbo.test_table ( id )
select row_number() over ( order by (select null) ) as id from cte5;
go

 

После этого мы «перекинем» все эти данные во временную таблицу с помощью инструкции SELECT…INTO

set statistics time on;
set statistics io on;
go

checkpoint;
dbcc dropcleanbuffers;
go

select * into #t
from dbo.test_table;
go

 

И сравним планы выполнения:
SQL Server 2012

SQL Server 2014

 

Запись опубликована в рубрике Полезно и интересно с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Войти с помощью: