ALTER TABLE
정말 큰 테이블 (약 3 천만 행) 의 명령에 대한 질문이 있습니다 . 해당 열 중 하나 varchar(255)
는 varchar(40)
입니다. 로 크기를 조정하고 싶습니다 . 기본적으로 다음 명령을 실행하여 열을 변경하고 싶습니다.
ALTER TABLE mytable ALTER COLUMN mycolumn TYPE varchar(40);
프로세스가 매우 길더라도 문제가 없지만 ALTER TABLE 명령 동안 내 테이블을 더 이상 읽을 수없는 것 같습니다. 더 똑똑한 방법이 있습니까? 어쩌면 새 열을 추가하고 이전 열의 값을 복사하고 이전 열을 삭제하고 마지막으로 새 열의 이름을 바꾸겠습니까?
어떤 단서라도 대단히 감사하겠습니다! 미리 감사드립니다.
참고 : PostgreSQL 9.0을 사용합니다.
varchar(255)
PostgreSQL에 말하면 실제 길이가 40 바이트 인 값에 255 바이트를 할당 하지 않습니다 . 40 바이트를 할당합니다 (일부 내부 오버 헤드). be changed by the
ALTER TABLE` 할 유일한 것은 PG에서 오류를 발생시키지 않고 해당 열에 저장할 수있는 최대 바이트 수입니다.
resizing
테이블이 적은 공간을 차지하지 않을 것입니까?