0과 1 값에는 TINYINT를 사용하세요
MySQL에서 참/거짓처럼 0과 1 두 가지 값만 저장하는 필드가 있다면, ENUM 타입보다 TINYINT를 사용하는 것이 좋습니다. TINYINT는 저장 공간이 1바이트로 매우 작고, 인덱싱과 비교 연산에서 성능상 이점이 있으며, 코드 가독성과 유지보수 측면에서도 더 유연합니다.
예제 테이블 생성하기
먼저 TINYINT 타입의 컬럼을 가진 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
-> (
-> IsMarried tinyint
-> );
Query OK, 0 rows affected (0.94 sec)데이터 삽입하기
INSERT 명령을 사용해 테이블에 레코드를 추가합니다. 결혼 여부를 나타내기 위해 1(결혼함)과 0(미혼) 값을 저장합니다.
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)
저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+-----------+ | IsMarried | +-----------+ | 1 | | 0 | +-----------+ 2 rows in set (0.00 sec)
TINYINT를 권장하는 이유 정리
- 저장 공간: TINYINT는 1바이트만 차지하여 저장 효율이 뛰어납니다.
- 성능: 숫자 기반 비교와 인덱스 처리가 ENUM 문자열 매핑 방식보다 빠릅니다.
- 확장성: 나중에 값의 의미를 확장하거나 다른 시스템과 연동할 때 숫자 값이 더 범용적입니다.
- 표준 관례: BOOLEAN은 MySQL에서 사실상 TINYINT(1)의 별칭이므로, 불리언 성격의 데이터에 자연스럽게 어울립니다.
따라서 0과 1만 다루는 필드라면 ENUM 대신 TINYINT(또는 BOOLEAN)를 선택하는 것이 가장 안정적이고 효율적인 방법입니다.