Array Insert
Begin tran Commit tran 은 빼고 Test 하시길 바랍니다.
alter database t set recovery simple with rollback immediate
go
if object_id ('tblx') is not null
drop table tblx
go
create table tblx
(c1 int
,c2 int
,c3 int
,c4 int
,c5 int
,c6 int
,c7 int
,c8 int
,c9 int
,c10 int
,c11 int
,c12 int
,c13 int
,c14 int
,c15 int
)
go
declare
@total_loop_count int = 100000
,@current_loop_count int = 0
,@array_insert int = 0
,@start_time datetime2 = getdate()
,@end_time datetime2 = getdate()
begin tran
while (1=1) begin
if @array_insert = 1 begin
insert into tblx values
(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
, (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
, (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
, (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
, (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
, (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
, (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
, (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
, (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
, (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
set @current_loop_count += 10
print @current_loop_count
if @current_loop_count >= @total_loop_count break;
end else begin
insert into tblx values
(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
set @current_loop_count += 1
print @current_loop_count
if @current_loop_count >= @total_loop_count break;
end
end
commit tran
select datediff(second, @start_time, getdate()) '입력시간 sec'
'밥벌이' 카테고리의 다른 글
민석이의 waitstat 모니터링 (0) | 2010.11.18 |
---|---|
부하 데이터생성 (0) | 2010.11.18 |
이 쿼리의 결과는 뭘까요? (6) | 2010.11.04 |
insert select 로 인해 플랜 공간이 소모됩니다. (0) | 2010.10.28 |
insert 속도를 높여보자 (1) | 2010.10.18 |
- ansi left outer join 에서 on 절에는 join 조건을 기술하고 where 조건은 필터를 표시한다. 그러므로 어떠한 경우에도 명확하게 표현할 수 있다.
- tsql *= (left join) 은 driving table 의 조건은 filter 조건이고, drived 되는 테이블의 조건은 join 조건으로만 풀려 drived 되는 테이블을 필터로 풀 수 없는 문제가 있게된다. 이러한 불편을 해소하기 위해 tsql *= (outer join) 을 sql 서버에서 차기 버전부터 지원하지 않기로 한 것이다. work around 로 tsql *= 에서 inline view 를 같이 쓰면 drived 되는 테이블의 filter 조건을 명시 할 수 있다.
- 따라서 이것을 누구처럼 먼저하고 저것을 먼저하고 라고 해석하면 안된다.