대형 테이블에서 VARCHAR 컬럼의 크기를 늘릴 때 문제가 있습니까?
SQL Server 2008을 사용하고 있으며 약 500k 행이있는 테이블에서 VARCHAR 필드를 (200에서 1200) 더 크게 만들어야합니다. 내가 알아야 할 것은 내가 고려하지 않은 문제가 있는지 여부입니다.
이 TSQL 문을 사용할 것입니다.
ALTER TABLE MyTable
ALTER COLUMN [MyColumn] VARCHAR(1200)
나는 이미 데이터 사본에서 그것을 시도했으며이 진술은 내가 볼 수있는 나쁜 영향을 미치지 않았습니다.
그래서 내가 고려하지 않았던 가능한 문제가 있습니까?
그건 그렇고, 열은 인덱싱되지 않습니다.
이는 메타 데이터 변경 일 뿐이며 빠릅니다.
관찰 : SET ANSI_xx 설정 중 하나가 다른 경우 "사고"를 피하기 위해 명시 적으로 NULL 또는 NOT NULL을 지정하십시오.
이 질문을 검색했기 때문에 2 센트를 추가하고 싶었습니다. b / c 비슷한 상황에 처해있었습니다.
인식 에서 변경하는 동안 것을 varchar(xxx)
하는 것은 varchar(yyy)
참으로 메타 데이터 변경,하지만에 변경하는 것은 varchar(max)
아니다. 때문에 varchar(max)
값 (BLOB 값 일명 - 이미지 / 텍스트 등) "행에서"하지 테이블 행 내에서 디스크에 다르게 저장되지만. 따라서 서버는 큰 테이블에서 엉망이되어 몇 분 (시간) 동안 응답하지 않습니다.
--no downtime
ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(1200)
--huge downtime
ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(max)
추신. nvarchar
또는 코스 에도 동일하게 적용됩니다 .
Varchar (200)에서 Varchar (1200)로 변경하면 메타 데이터 변경 일 뿐이므로 문제가 발생하지 않으며 SQL Server 2008이 과도한 공백을 자르기 때문에 성능 차이가 없어야합니다. 변화.
열을 varchar (max)로 변환하지 않아야하는 또 다른 이유는 varchar (max) 열에 인덱스를 만들 수 없기 때문입니다.
제 경우에는 열 변경이 작동하지 않았으므로 다음과 같이 '수정'명령을 사용할 수 있습니다.
alter table [table_name] MODIFY 열 [column_name] varchar (1200);
'development' 카테고리의 다른 글
CDI에서 @ApplicationScoped와 @Singleton 범위의 차이점은 무엇입니까? (0) | 2020.09.22 |
---|---|
IList가 AddRange를 지원하지 않는 이유 (0) | 2020.09.22 |
BundleCollection이 MVC4에서 캐시 된 스크립트 번들을 플러시하도록하는 방법 (0) | 2020.09.22 |
XML 직렬화 및 상속 된 유형 (0) | 2020.09.22 |
Perl에서 .pm (Perl 모듈)과 .pl (Perl 스크립트) 파일의 차이점은 무엇입니까? (0) | 2020.09.22 |