varchar와 같은 경우 메모리에 가변길이로 할당되어 일정길이 만큼 미리 할당해 놓지 않는 거라 알고 있습니다만,
실제로 디스크에 데이터가 저장될때도 마찬가지로 char에 비해 varchar가 디스크 용량을 절약할 수 있는건가요?
sample 테이블 생성 create table #temp ( c char(10) not null, d varchar(10) not null ) char, varchar 모두 max 길이를 명시해주어야 합니다.
char type인 경우 10byte 공간을 모두 할당하고 저장되지만 varchar인 경우 가변적으로 바뀔수 있습니다. ex) insert #temp values('1', '2') 10+1 => exp_row_size를 지정하지 않았다면 대략 11byte 저장됨
varchar인경우 disk공간은 절약되지만 varchar로 되어있는 column을 update할 때 forworded row가 발생될 수 있습니다.
forworded row가 발생하기 때문에 update도 direct update 보다 defered update가 발생할 가능성이 많음
char type이더라도 null을 허용하는 경우 varchar 처럼 동작됨니다.
일단 IQ는 무조건 char로 잡으시고요....(그렇게 많이 차지 하지 않으므로) 위의 분 말씀대로 varchar나 null allow로 하시면.... 모두 varchar로 저장이 됩니다. varchar type을 index로 잡으시면 overhead가 있고요 저장시 varchar의 실제저장길이를 data앞에 위치하므로 실제 performance에 영향이 있다고 되어 있습니다. (물론 이론상으로요....테스트 해보면 ...그다지 차이는 안나는듯)