안녕하세요.
다름이 아니라 테이블을 수정해야 하는 케이스가 있습니다.
해당 테이블에 현재 1억건이 넘는 데이터가 입력되어 있습니다.
이 상태에서 신규 컬럼을 스크립트를 추가 하는거랑..
신규 테이블을 생성해서 JOIN하는 프로세스 중에 어떤 부분이 효율적인가요?
Comment 1
-
한태
2016.02.12 18:05
안녕하세요.
다름이 아니라 테이블을 수정해야 하는 케이스가 있습니다.
해당 테이블에 현재 1억건이 넘는 데이터가 입력되어 있습니다.
이 상태에서 신규 컬럼을 스크립트를 추가 하는거랑..
신규 테이블을 생성해서 JOIN하는 프로세스 중에 어떤 부분이 효율적인가요?
2016.02.12 18:05
신규 컬럼 추가시에는 단계를 나눠서 수행하는 것이 좋습니다.
아래의 쿼리를 예시로 하였을 때
alter table T
add mycol bit not null default 0
위의 예시보다는 아래처럼 나눠서 실행하는 것이 효율면에서 좋습니다.
alter table T add mycol bit null
go
update T set mycol = 0
go
alter table T alter column mycol bit not null
go
alter table T add default 0 for mycol
go
백만건이 있는 테이블로 테스트했을 경우 아래의 경우가 보다 빠른 작업 수행능력을 보였습니다.
혹시 4번째쿼리에서 이미 default 값이 존재한다는 에러발생하면
EXECUTE [dbo].[sp_helpconstraint] 테이블명
GO
을 통해 default 값을 확인 후 제약조건 삭제, 추가를 통해 수정 가능합니다.