Post List

2025년 6월 24일 화요일

[Performance Tuning][SQL Tuning] The Hidden Costs of INSERT EXEC

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 ~)를 하자.
  • 웬만하면 다른 솔루션을 이용하자. 로그 기록을 최소화하는 걸루다가..

댓글 없음:

댓글 쓰기