#title The Hidden Costs of INSERT EXEC [[TableOfContents]] ==== 무작정 해보자 ==== {{{#! 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. }}} ==== 결론 ==== * 웬만하면 INSERT ~ EXEC(SELECT ~ )를 하지 말자. * 웬만하면 EXEC(INSERT ~ SELECT ~)를 하자. * 웬만하면 다른 솔루션을 이용하자. 로그 기록을 최소화하는 걸루다가.. ==== 참고자료 ==== * http://sqlblog.com/blogs/adam_machanic/archive/2009/06/25/the-hidden-costs-of-insert-exec.aspx