큰 테이블의 VARCHAR 컬럼 크기를 늘릴 때 문제가 발생합니까?
SQL Server 2008을 사용하고 있는데, 약 500k 행의 테이블에서 VARCHAR 필드를 (200에서 1200까지) 크게 해야 합니다.제가 알아야 할 것은 제가 고려하지 않은 문제가 있는지 여부입니다.
다음 TSQL 스테이트먼트를 사용합니다.
ALTER TABLE MyTable
ALTER COLUMN [MyColumn] VARCHAR(1200)
나는 이미 데이터 복사본으로 그것을 시도했고 이 진술은 내가 볼 수 있는 어떤 악영향도 없었다.
그럼 제가 미처 고려하지 못한 문제가 있을까요?
참고로 컬럼은 인덱스가 되어 있지 않습니다.
이것은 메타데이터의 변경일 뿐입니다.빠릅니다.
관찰: SET ANSI_xx 설정 중 하나가 다른 경우(어떤 이유로 SSMS가 아닌 osql에서 실행되는 경우) "사고"를 피하기 위해 NULL 또는 NOT NULL을 명시적으로 지정합니다.
2센트를 더하고 싶어서 이 질문을 검색했더니 나도 비슷한 상황에 처했어
변경 시 주의해 주세요.varchar(xxx)
로.varchar(yyy)
메타 데이터 변경은 사실이지만 로의 변경은 그렇지 않습니다.왜냐면varchar(max)
값(BLOB 값 - 이미지/텍스트 등)은 테이블 행 내가 아니라 "out of row" 디스크에 다르게 저장됩니다.따라서 서버는 큰 테이블에서 미쳐 몇 분(시간) 동안 응답하지 않습니다.
--no downtime
ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(1200)
--huge downtime
ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(max)
PS. 동일nvarchar
또는 물론입니다.
Varchar(200)에서 Varchar(1200)로 변경해도 문제가 발생하지 않습니다.이는 메타데이터 변경일 뿐이며 SQL Server 2008에서는 공백이 생략되기 때문에 성능 차이가 나타나지 않기 때문에 쉽게 변경할 수 있습니다.
열을 varchar(max)로 변환하지 않는 또 다른 이유는 varchar(max) 열에 인덱스를 생성할 수 없기 때문입니다.
이 경우 alter 열이 작동하지 않기 때문에 다음과 같은 'Modify' 명령을 사용할 수 있습니다.
변경 테이블 [table_name] MODIFY 컬럼 [column_name] varchar(varchar);
언급URL : https://stackoverflow.com/questions/7513513/when-increasing-the-size-of-varchar-column-on-a-large-table-could-there-be-any-p
'programing' 카테고리의 다른 글
트리거와 DataTrigger의 차이점은 무엇입니까? (0) | 2023.04.11 |
---|---|
ContentControl과 ContentPresenter의 차이점은 무엇입니까? (0) | 2023.04.11 |
대소문자를 구분하지 않는 목록 검색 (0) | 2023.04.11 |
Bash에서 어레이를 슬라이스하는 방법 (0) | 2023.04.11 |
# 꺽쇠 괄호 < >와 따옴표 "를 사용하여 Import합니다. (0) | 2023.04.11 |