2010-01-29 2 views
0

SQL 2005에서 두 개의 테이블을 만들고 데이터로 채우는 프로젝트가 있습니다. 날씨에 대한 조회 테이블은 남성의 이름이거나 여성의 이름입니다) 나는 삽입 할 남성 7354 명과 삽입 할 여성 7776 명을 가진다.SQL 2005에 매우 많은 행 삽입하기

현재 나는

CREATE TABLE #NamesMale (
[FirstName] [varchar](50) NOT NULL, 
    [MaxRank] [smallint] NULL) 

CREATE TABLE #NamesFemale (
[FirstName] [varchar](50) NOT NULL, 
    [MaxRank] [smallint] NULL) 

insert into #NamesMale select 'AADEN',343 
insert into #NamesMale select 'AAPELI',1000 
insert into #NamesMale select 'AAPO',1000 
... (snip ~7300 lines) 
insert into #NamesMale select 'ZVONIMIR',1000 
insert into #NamesMale select 'ZVONKO',1000 
insert into #NamesMale select 'ZYGMUNT',1000 

insert into #NamesFemale select 'AALIYAH',64 
insert into #NamesFemale select 'AAREN',1000 
insert into #NamesFemale select 'AARON',873 
... (snip ~7700 lines) 
insert into #NamesFemale select 'ZUZANA',1000 
insert into #NamesFemale select 'ZUZANNA',1000 
insert into #NamesFemale select 'ZVONIMIRA',1000 

그것은 현재 내 컴퓨터에 이름을로드 십사초 1 분 소요이이 분야에서 사용되는 위치 서버가 자주 내 dev에 비해 훨씬 강력 할 것 할 기계.

별도의 대량 복사 파일을 사용하는 것은 옵션이 아닙니다. 솔루션은 전적으로 transact-sql이어야하며 한 파일에 있어야합니다. 바람직하게는 sql2000과의 호환성을 손상시키지 않는 솔루션을 원합니다. 그러나 이는 요구 사항이 아닙니다.

도움을 주시면 감사하겠습니다.

답변

0

나는 나의 자신의 질문에 대한 답을 찾았습니다. 이 코드를 실행중인 프로그램의 진행률 표시 줄에 데이터를 제공하려고 시도하는 동안 10 초 또는 11 GO 명령을 삽입하여 몇 초 후에 끝내는 방식으로 GO/GO를 사용합니다.

나는 그것을 고쳐야하는 이유를 모르지만 누구든지 의견에 설명해 주시면 감사하겠습니다.

+0

GO 문이 없으면 전체가 하나의 트랜잭션으로 실행됩니다. GO 문을 사용하면 일련의 작은 트랜잭션으로 실행됩니다. 아마도 작은 트랜잭션에서 큰 트랜잭션 (잠금 등)의 오버 헤드가 줄어들 것입니다. –

2

select이 나를 늦추는 지 모르겠습니다. 나는 그것을 할 것이다 :

+0

1:14에서 0:06까지 런타임을 향상시키는 것이 약간의 개선이라고 생각합니다. 감사! –

+0

Spoke가 너무 일찍 끝났습니다. 잘못된 것이 었습니다. 여전히 1:11 –

관련 문제