CHAR 와 VARCHAR2의 차이점은 다음 예를 보면 알 수 있을 것이다.
CHAR(5) 에 'A'를 입력할 경우 DB내부에서는 5 SPACE를 차지한다.(5자리모두설정)VARCHAR2(5) 에 'A'를 입력할 경우 DB내부에서는 1 SPACE를 차지한다.(최대5자저장가능)
많은 사람들이 유연성과 효율성때문에 VARCHAR2를 사용하고 있고,개발상 또는 관리상의편의를 위해 DATE형으로 입력할 DATA도 많이 VARCHAR2를 사용한다.하지만 저장공간의 효율성이 있는 만큼 단점도 있다.
CHAR는 모든 자리수를 꽉 채우는 것을 원칙으로 하기 때문에 DBMS에 추가적인 LOGIC의 발생이없다.하지만 VARCHAR2는 전체자리수중 실제 사용된 것만 채워주고 나머지는 다른 DATA에 양보하므로 내부적으로 추가적인 LOGIC이 발생한다.
VARCHAR2의 갯수가 많으면 많을 수록 계산의 양도 많아진다.특히 VARCHAR2를 사용한 칼럼이INDEX COLUMN이거나 KEY(PRIMARY OR FOREIGN KEY) COLUMN이라면 더욱 그렇다.
따라서,KEY값들은 CHAR로 잡고 변동이 많은 COLUMN은 VARCHAR2로 잡아주는 것이 바람직하다.
CHAR를 KEY값으로 사용할 때는 주의할 점이 있다.SQL문을 직접 사용하면 잘 나타나지 않지만 개발TOOL을 사용할 경우 KEY COLUMN을 꽉 채워주지 않으면 JOIN을 생성못하는 경우가 있다.A TABLE : A CHAR(3) PRIMARY KEYB TABLE : A CHAR(3) PRIMARY KEY
A.A에 '1'을 입력하고 B.A에 '1'을 입력하여 두 테이블에 RELATION을 걸면 조회되지 않는다.(디벨로퍼2000의 경우)남아있는 SPACE때문에 발생하는 일이므로 KEY COLUMN을 CHAR로 잡아줄때는 반드시 꽉 채워준다. 관리상으로도 훨씬 수월해진다.예)LPAD(A.A,3,'0')->'001'LPAD(B.A,3,'0')->'001'
댓글 없음:
댓글 쓰기