Search Results for 'DBMS'

66 POSTS

  1. 2007.10.29 MySQL ENUM 타입에 대해서..
  2. 2007.10.03 MySQL의 ROW_FORMAT=Fixed/Dynamic의 차이 1
  3. 2007.09.11 API for MySQL

MySQL ENUM 타입에 대해서..

Posted 2007. 10. 29. 18:34
MySQL 서브쿼리는  버전 4.1.x 대부터 지원하고 있다.

ENUM(value1, value2, value3...) value는  최대 65535 개까지 가능.

CREATE TABLE TEST (
id varchar(10),
name varchar(20),
auth_code  ENUM('AA01', 'AB01', 'AC01', 'AD01', 'AD99')
)

INSERT INTO TEST VALUES ('test', '테스트','AA01')
INSERT INTO TEST VALUES ('test2', '테스트1', 2)

select * from TEST;
결과는
 ------------------------------------
   id          name           auth_code
-------------------------------------
 test          테스트            AA01
 test2        테스트2           AB01
-------------------------------------
select *  from TEST where auth_code = 1;
결과는
------------------------------------
  id          name           auth_code
-------------------------------------
test          테스트            AA01
-------------------------------------

속도면에서도 도움이 될것 같다. 디비가 알아서 n개중에 하나를 찾게 되니...

비슷한 기능을 하는 놈 중에 SET이 있는데 ENUM이 한개만 선택이 가능하다면 SET은 다중선택이 가능해서 입력이 가능하다는것....

INSERT INTO TEST VALUES ('test', '테스트','AA01,AB01, AC01') <-- ENUM타입이라면 에러난다.

암튼 좀 특이한 타입이지만 나름 유용하게 사용하면 좋을것 같다.


SQLYog을 이용하여 테이블 생성할때마다 꼭 붙는 놈이 있었다.
테이블 생성문 마지막에 ROW_FORMAT=DYNAMIC이다.

그래서 찾아봤다...여기저기..

꼭 DYNAMIC으로 하는게 아니란다.
테이블에 TEXT, BLOB타입이 존재할 경우에 DYNAMIC으로 설정한다는데...
내경우엔 없어도 DYNAMIC으로 붙는다. SQLYog가 설정문제인가? 암튼..
반대인 경우, 그러니까 TEXT,BLOB타입 같은놈이 없으면 FIXED가 된단다.

FIXED 로 하면 varchar(200)이 char(200)과 같은 식이 되어버려 메모리 용량은 증가하지만
조건이 있는 select 쿼리의 경우 성능은 대략 10% 까지 향상된다고 한다.
DYNAMIC 으로 되어 있으면 메모리 용량을 줄일 수 있지만 성능의 저하는 일부 감수해야 한다는..

그렇다고 FIXED로 무조건 해야한다? 그건 아니다.
테이블 용도와 성능 그리고 H/W 상황을 고려하여 알아서 해야 한다는...


API for MySQL

Posted 2007. 9. 11. 12:21


« PREV : 1 : ··· : 19 : 20 : 21 : 22 : NEXT »