-
MYSQL 데이터타입 정리 및 선택MYSQL 2023. 1. 18. 22:22
CHAR과 VARCHAR
MYSQL에서 사용하는 대표적인 문자열 데이터타입입니다.
CHAR란?
CHAR(숫자)
고정길이 문자열
숫자 = 저장할 수 있는 문자열의 최대길이
숫자의 범위 = 0~255
설정크기보다 작은 길이의 문자열이 입력되면, 나머지 공간을 공백으로 채워 길이를 숫자로 만든다.VARCHAR란?
VARCHAR(숫자)
가변길이 문자열
숫자 = 저장할 수 있는 문자열의 최대길이
숫자의 범위 = 0~65,535
실제 입력된 문자열의 길이만큼만 저장하고 사용한다.
BLOB과 TEXT
BLOB = Binary Large Object.
다양한 크기 바이너리 데이터 저장
저장할 수 있는 데이터 최대 크기 따라 나뉨- TINYBLOB = 최대 255byte
- BLOB = 최대 65535byte
- MEDIUMBLOB = 최대 16777215byte
- LONGBLOB = 최대 4294967295byte
TEXT = VARCHAR와 비슷하지만, 기본 값을 가질 수 없음.
BLOB과 비슷하지만 문자열의 대소문자 구분함.
저장할수 있는 데이터 최대 크기 따라 나뉨
- TINYTEXT = 최대 255byte
- TEXT = 최대 65535byte
- MEDIUMTEXT = 최대 16777215byte
- LONGTEXT = 최대 4294967295byte
ENUM
미리 정의한 집합 안의 요소 중 하나만을 저장할 수 있는 타입(단일 선택 가능)
가독성 증가, 특정 숫자에 문자열로 의미를 부여할 수 있다.
ENUM목록 집합은 최대 65,535개의 ENUM데이터를 포함할 수 있다.
ENUM데이터는 내부적으로 정수로 변환되어 인식된다.
ENUM('데이터값1','데이터값2',...)
ENUM 목록 집합의 각 데이터는 내부적으로 0부터 시작하여 1씩 증가하며 각각 대응된다.
단, 0은 빈 문자열('')과 대응되며 1부터 집합의 첫 번째 요소와 대응된다.
단점 = 컬럼에 저장되는 문자열의 값이 새롭게 추가되는 경우 테이블 구조를 변경해야 한다.
데이터 타입 선택 방법
적합한 데이터타입을 고르는 것은 좋은 성능을 얻는데 필수적이다.
- 타입은 작게!
작은 데이터타입일수록 디스크나 메모리, CPU 캐시에 더 적은 공간을 사용하기 때문에 더 빠르고, 덜 소비한다.
하지만 스키마에서 데이터 타입의 범위를 늘리는 작업은 어렵기 때문에 잘 생각해서 선정하도록한다. - 타입은 단순하게!
간단한 데이터 타입을 처리할수록 CPU 사이클로 덜 소비한다.
ex) 문자 비교는 Character set과 Collation으로 인해 복잡해지므로 문자 비교보다는 정수 비교가 비용이 더 저렴하다.
-> 날짜, 시간은 문자열로 저장하지말고 MySQL의 내장형식에 저장해야 하며 IP주소는 정수를 이용해 저장할 것
-> IP 주소를 사용할 수 있는 함수 = INET_ATON, INET_NTOA - 가능하면 NULL 금지!
컬럼은 되도록 NOT NULL로 정의.
NULL허용 컬럼은 저장 공간도 더 많이 사용하고 NULL 허용 컬럼을 인덱싱할 땐 항목마다 한 바이트씩 더 들어간다.
NULL대신 0이나 특수한 어떤 값, 빈 문자열 등을 사용하는 걸 고려할 것
'MYSQL' 카테고리의 다른 글
MYSQL 테이블 만들기 (CREATE TABLE) 및 PRIMARY KEY 설정 (0) 2023.01.18