[MySql] MySQL 최적의 데이터 타입 선택 방법

MySQL 최적의 데이터 타입 선택 방법

  • 타입은 작을수록 좋다

일반적으로 데이터를 저장하고 표현하는 데 문제가 없는 데이터 타입 중 가장 작은 것을 골라야 한다. 보통 작은 데이터 타입일수록 디스크나 메모리, CPU 캐시에 더 적은공간을 사용하기 때문에 더 빠르다. 게다가 작은 데이터 타입일수록 CPU도 덜 소비한다.

하지만 저장할 값의 크기를 너무 작게 추정하지 않도록 주의해야 한다. 스키마의 이곳저곳에서 데이터 타입의 범위를 늘리는 것은 어렵고, 시간을 많이 소용하게 되는 작업이기 때문이다.

  • 타입은 단순한 게 좋다

보통 간단한 데이터 타입을 처리할수록 CPU 사이클로 덜 소비한다. 예로 문자 비교보다는 정수 비교가 비용이 더 저렴하다. 문자 비교는 문자 셋 (Character set)과 콜레이션 (Collation) 으로 인해 복잡해지기 때문이다. 날짜와 시간은 문자열로 저장하지 말고, MySQL의 내장 형식에 저장해야 하며 IP 주소는 정수를 이용해 저장해야 한다.

IP 주소를 사용할 수 있는 함수로 INET_ATON 함수와 INET_NTOA 함수가 있으니 참고

  • 가능하면 NULL을 쓰지 말자

컬럼은 되도록이며 NOT NULL (NULL 허용 안함)로 정의해야 한다. NULL 허용이 기본값이다 보니 사용하는 응용 프로그램이 NULL (값이 없음)을 저장할 필요가 없을 때조차 테이블에 NULL을 허용하는 컬럼을 포함시킨 경우가 많다. NULL을 저장할 의도가 아니라면 컬럼을 NOT NULL로 정의하자.

NULL 허용 컬럼은 저장 공간도 더 많이 사용하며 NULL 허용 컬럼을 인덱싱할 땐 항목마다 한 바이트씩 더 들어간다. 만약 ‘값이 없다’는 사실을 테이블에 기록해야 하더라도 굳이 NULL을 쓸 필요는 없을지 모른다. NULL 대신 0이나 특수한 어떤 값, 빈 문자열 등을 사용하는 걸 고려해보자.

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기
captcha
자동등록방지 숫자입력

웹개발

번호 제목 글쓴이 날짜 조회수
122 [Dart] Dart 문법 정리 최고관리자 09-09 24,465
121 [Flutter] absorbpointer-and-ignorepointer 최고관리자 09-08 23,791
120 [PHP] 타입선언 최고관리자 08-22 23,622
119 [PHP] error_level 셋팅과 실제 출력 최고관리자 08-21 23,723
118 [MySql] 타입지정시 괄호안의 숫자 최고관리자 08-18 23,754
117 [MySql] MySQL 최적의 데이터 타입 선택 방법 최고관리자 08-18 23,434
116 [MySql] 인덱스 조회시 주의 사항 최고관리자 08-18 23,434
115 [MySql] NOT NULL과 DEFAULT 를 동시에 쓸 필요가 있는가? 최고관리자 08-18 23,454
114 [Flutter] Row and Column 최고관리자 08-16 23,317
113 [Flutter] Linting 설정으로, 흔하게 실수할 수 있는 것을 build 전 방지하기. 최고관리자 08-16 23,477
112 [PHP] PHP 7.x PHP 8.x에서의 조건문 최고관리자 07-26 23,449
111 [JS] Webpack을 쓰는 이유 최고관리자 07-24 23,507
110 [Vue] Vue Router 최고관리자 07-22 23,388
109 [Vue] Vue.js 기본 원리 최고관리자 07-22 23,876
108 [MySql] 쿼리 결과를 합치는 union vs union all의 차이 최고관리자 07-10 23,400
107 [Vue] 일반적인 프로젝트의 구조에 대해 알아보자. 최고관리자 06-18 23,464
106 [JSP] vue등의 스크립트 분석을 위해 %태그 정도는 알자. 최고관리자 06-18 23,594
105 [MySql] 페이징(paging) 쿼리시 전체개수를 한번에 처리하는 방법 최고관리자 06-14 24,233
104 [MySql] Join vs Sub Query 비교 최고관리자 06-05 23,644
103 [SQL] SQL Join에 대한 이해 최고관리자 06-05 23,495