Contents

[-]
1 무작정 해보자
2 결론
3 참고자료


1 무작정 해보자 #

#!
create table #temp(id varchar(150))

truncate table #temp 
exec('
	insert #temp 
	select top 10000 convert(varchar(150), newid())
	from sys.objects a, sys.objects b
	')
테이블 '#temp'. 검색 수 0, 논리적 읽기 수 10060, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.


truncate table #temp 
insert #temp 
exec('
	select top 10000 convert(varchar(150), newid())
	from sys.objects a, sys.objects b
	')

테이블 '#temp'. 검색 수 0, 논리적 읽기 수 10060, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.
테이블 'Worktable'. 검색 수 1, 논리적 읽기 수 20410, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.


truncate table #temp 

declare @sql nvarchar(500)
set @sql = N'
	select top 10000 convert(varchar(150), newid())
	from sys.objects a, sys.objects b
	'
insert #temp 
exec sp_executesql @sql

테이블 '#temp'. 검색 수 0, 논리적 읽기 수 10060, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.
테이블 'Worktable'. 검색 수 1, 논리적 읽기 수 20410, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.

2 결론 #

  • 웬만하면 INSERT ~ EXEC(SELECT ~ )를 하지 말자.
  • 웬만하면 EXEC(INSERT ~ SELECT ~)를 하자.
  • 웬만하면 다른 솔루션을 이용하자. 로그 기록을 최소화하는 걸루다가..

3 참고자료 #

Retrieved from http://w.databaser.net/moniwiki/wiki.php/TheHiddenCostsOfINSERTEXEC
last modified 2018-04-13 23:12:53