티스토리 뷰


CHAR

  고정 길이 문자열을 저장. 

  사용자가 고정길이 보다 짧은 값을 저장하면 나머지 공 간은 Space로 체움.

  1~255까지의 문자를 저장.

  사용자가 후행 공백을 포함하여 고정길이 보다 큰 값을 입력하면 고정 길이에 맞게 값에서 공백이 잘림.

  값이 너무크면 Oracle Error발생

  공백채움비교(blank-padded comparison semantics)를 사용.



VARCHAR2

가변길이 문자열을 저장.

1 ~2000 Byte 저장가능함.

최대 50자의 VARCHAR2타입의 변수에 10자를 저장한다면 실제 저장공간도 10자만을 저장.




  ORACLE(오라클)을 공부하면서 가장 먼저 만나는 것은 역시 '데이터 타입'이다. 앞에서 간단히 살펴본 CHAR과 VARCHAR2와 같은 '문자형 데이터' 뿐만 아니라 숫자형 데이터, 날짜형 데이터 등 다양한 데이터 타입이 존재한다.


  데이터 타입이 어떤 것이 있느냐도 중요하지만, 더 중요한 것은 어떤 상황에서 어떤 데이터 타입을 선택해서 사용할 것이냐 하는 것이다. 문자형 데이터의 경우 CHAR과 VARCHAR2를 가장 많이 사용하는데, 그 중에서 CHAR과 VARCHAR2를 어떻게 선택해서 사용하는 게 좋을까?


  앞에서 설명한 것처럼 CHAR과 VARCHAR2의 가장 큰 차이는 아래와 같다.


CHAR(5)와 VARCHAR2(5)에 동일하게 'aa'라는 데이터(정보)를 입력했다고 할 때, CHAR(5)는 고정길이이므로 입력된 값(데이터)와 상관없이 5스페이스(space, byte)를 차지한다. 그에 비해서 VARCHAR2(5)는 가변이므로 입력된 값만큼 2스페이스만 차지하게 된다. 그만큼 용량에 대한 부분을 고려할 때, VARCHAR2가 유리한 점이 많다.


  그렇다면 모두 VARCHAR2를 사용하지 않는 이유는 무엇일까? 무조건 VARCHAR2를 사용시 가변이기 때문에 내부에서 추가적인 Logic이 발생되어 속도 저하를 일으킬 수 있다. 특히, 고정값을 사용하는 키나 인덱스 컬럼등은 고정크기를 갖는 CHAR로 사용하는 것이 좋다고 한다.





댓글