최적의 데이터 유형 선택

  1. 작을수록 좋습니다.
    1. 데이터 유형이 작을수록 디스크, 메모리, CPU 캐시의 공간을 덜 사용하기 때문에 대체로 더 빠릅니다.
    2. 그러나 데이터 유형 범위를 늘리는 작업이 시간이 걸리기 때문에 초과하지 않을 것 같은 가장 작은 데이터 유형을 선택하는것이 좋습니다.
  2. 단순할수록 좋습니다.
    1. 문자 집합과 정렬 규칙은 문자 비교를 복잡하게 만들기 때문에 정수를 비교하는 것이 문자보다 더 비용이 적게 듭니다.
  3. 가급적 NULL을 피합니다.
    1. NULL을 저장할 의도가 아니라면 일반적으로 열을 NOT NULL로 지정하는 것이 좋습니다.
    2. 다만 NULL 열을 NOT NULL로 변경해서 얻는 성능 향상이 크지는 않으므로 그것들이 문제를 일으키는지 파악이 되지 않으면 변경하지 않아도 좋습니다.

정수

정수를 저장하는 경우 TINYINT, SMALLINT, MEDIUMINT, INT 또는 BIGINT와 같은 정수 유형 중 하나를 사용합니다. 각각 8, 16, 24, 32, 64비트의 저장 공간이 필요합니다.

정수 계산에서는 일반적으로 64비트 BIGINT 정수를 이용합니다.

실수

FLOAT 및 DOUBLE 유형은 표준 부동 소수점 연산으로 근사 계산을 지원합니다. FLOAT 열은 4바이트의 스토리지를 사용합니다. DOUBLE은 8바이트를 소비하며 FLOAT보다 정밀도가 높고 값 범위가 더 큽니다. MySQL은 부동소수점 유형에 대한 내부 계산에 DOUBLE을 사용합니다. 재무 데이터를 저장할 때와 같이 소수점에 대한 정확한 결과가 필요한 경우에만 DECIMAL을 사용해야 합니다.

VARCHAR와 CHAR 유형

VARCHAR

  1. 가변 길이 문자열을 저장하며 가장 일반적인 문자열 데이터 유형입니다. 필요한 공간만큼만 사용하기 때문에 고정 길이 유형보다 저장 공간이 덜 필요할 수 있습니다.
  2. 추가 바이트는 열의 최대 길이가 255바이트 이하이면 1바이트, 그 이상이면 2바이트 입니다.
  3. VARCHAR는 최대 열 길이가 평균 길이보다 훨씬 길거나, 필드에 대한 업데이트가 드물어서 조각화가 문제가 되지 않을 때, 그리고 UTF-8과 같은 복잡한 문자셋을 사용할 때 사용하는 것이 좋습니다.

CHAR

  1. CHAR은 고정 길이입니다. 그래서 항상 길이가 동일한 사용자 암호의 MD5값에 적합합니다.
  2. MYSQL에서 CHAR의 후행 공백은 제거합니다.

BLOB과 TEXT 유형

  1. BLOB 및 TEXT는 대용량 데이터를 각각 바이너리 또는 문자열로 저장하도록 설계된 문자열 데이터 유형입니다.
  2. BLOB과 TEXT 유형군의 유일한 차이점은 BLOB유형은 데이터 정렬이나 문자 집합 없이 바이너리 데이터를 저장하지만, TEXT 유형에는 문자 집합과 데이터 정렬이 있습니다.