저장하게 될 모든 값을 올바르게 담을 수 있는 가장 작은 타입을 선택하세요. 올바른 타입은 디스크를 절약하고 인덱스를 줄이며 조용한 데이터 손상을 방지합니다.
저장하게 될 모든 값을 올바르게 담을 수 있는 가장 작은 타입을 선택하세요. 올바른 타입은 디스크를 절약하고 인덱스를 줄이며 조용한 데이터 손상을 방지합니다.
INT(4바이트)를, 약 21억을 정말로 넘어설 때만 BIGINT(8바이트)를 사용하세요.DECIMAL(10,2)를 사용하세요 — 이진수로 반올림되어 센트를 잃는 FLOAT/DOUBLE은 절대 사용하지 마세요.VARCHAR(n)을 사용하세요. n은 상한이며, 저장 공간은 실제 사용한 만큼만 차지합니다.TEXT를 사용하세요 — 페이지 외부에 저장되며 기본값을 가질 수 없습니다. 필터링에 쓰는 짧은 값에는 사용하지 마세요.DATETIME(타임존 없음, 8바이트) vs TIMESTAMP(UTC로 변환, 4바이트, 약 2038년 한계).CREATE TABLE payments (
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
amount DECIMAL(10,2) NOT NULL, -- exact money, not FLOAT
currency CHAR(3) NOT NULL, -- always 3 chars -> fixed CHAR
note VARCHAR(255), -- bounded, indexable
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- Pitfall: the default SQL mode rejects bad values (good) --
INSERT INTO payments (amount) VALUES ('abc'); -- ERROR 1366, not silently 0
FLOAT 사용.VARCHAR(255) 사용 — 지나치게 큰 키는 인덱스를 비대하게 만듭니다.UNSIGNED를 빠뜨림(양수 범위가 두 배가 됩니다).데이터 타입은 가장 저렴한 정확성·성능 결정이면서 나중에 바꾸기가 가장 어렵습니다. 좁고 정확한 타입은 인덱스를 작게 유지하고, 잘못된 데이터가 프로덕션 버그가 되기 전에 입구에서 막아줍니다.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기