Yikes! ENUM
필드에 숫자를 사용하는 데는 모호한 점이 많습니다. 조심해. 내가 기억하는 한 잡았다는 인덱스로 ENUMS
에서 값에 액세스 할 수 있다는 것입니다 : 당신의 열거는 ENUM('A', 'B', 'C', '1', '2, '3')
경우, 다음 두 쿼리는 매우 다르다 :
INSERT INTO TABLE (example_col) VALUES('1'); -- example_col == 1
INSERT INTO TABLE (example_col) VALUES( 1 ); -- example_col == A
나는 그것이 유효한 값을 제한하기 때문에 추천입니다 있으리라 믿고있어 테이블에 들어갈 수 있습니다. 예를 들어 13을 삽입하면 기본 선택 항목을 가져와야합니다.
더 나은 선택은 INT
대신 TINYINT
을 사용하는 것이 좋습니다. UNSIGNED TINYINT
의 범위는 0에서 255까지이며 1 byte to store 만 필요합니다. INT
은 4 바이트를 저장합니다. 테이블에 값이 들어가도록 제한하려면 값을 확인하는 ON INSERT
및 ON UPDATE
트리거를 추가 할 수 있습니다.
ENUM
과 TINYINT
의 성능 차이가 걱정된다면 언제든지 벤치마킹을 통해 차이를 확인할 수 있습니다. This article 다소 관련성이 있습니다.
1 바이트 정수 (tinyint)를 사용할 수도 있습니다. – Zaffy