0과 1만 저장하는 플래그 컬럼이라면 TINYINT가 더 적합합니다. 저장 공간이 1바이트로 작고, 인덱스 효율도 좋으며, 숫자 연산이 직관적입니다.
TINYINT 예제
mysql> CREATE TABLE DemoTable (
-> IsMarried TINYINT
-> );
Query OK, 0 rows affected (0.94 sec)
mysql> INSERT INTO DemoTable VALUES(1); Query OK, 1 row affected (0.21 sec) mysql> INSERT INTO DemoTable VALUES(0); Query OK, 1 row affected (0.13 sec)
데이터 조회
mysql> SELECT * FROM DemoTable;
+-----------+ | IsMarried | +-----------+ | 1 | | 0 | +-----------+ 2 rows in set (0.00 sec)
비교:
- TINYINT: 1바이트, 숫자 연산 가능(
SUM(IsMarried)로 기혼자 수 계산), 인덱스 친화적 - ENUM('0','1'): 문자열 비교 필요, 내부적으론 정수지만 문자열처럼 동작, 값 추가 시
ALTER TABLE필요 - BOOLEAN: 실제론
TINYINT(1)의 별칭,TRUE/FALSE리터럴 사용 가능
권장: 단순 플래그는 TINYINT UNSIGNED 또는 BOOLEAN을 쓰세요. 의미 있는 레이블이 여러 개면(예: 'Active', 'Inactive', 'Pending') ENUM을 고려하세요.