2011-09-29 11 views
5

CHAR은 고정 길이 문자열로 저장되고 VARCHAR은 가변 길이 문자열로 저장됩니다. 고정 길이 문자열을 저장하기 위해 VARCHAR을 사용할 수 있지만 사람들은 여전히 ​​CHAR을 사용하여 고정 길이 문자열을 저장하려고합니다. VARCHAR에 비해 CHAR을 사용하면 어떤 이점이 있습니까? 아무런 이점이 없다면 왜 mySQL 데이터베이스가 CHAR 옵션을 제거하지 못합니까?VARCHAR에 비해 CHAR를 사용하면 어떤 이점이 있습니까?

+0

http://stackoverflow.com/questions/59667/why-would-i-ever-pick-char-over-varchar-in-sql –

+0

http://stackoverflow.com/questions/350195/char-vs 데이터베이스에 대한 -varchar- –

+0

ops, 중복 된 질문에 대해 죄송합니다. 대답 해 봤어. 링크를 가져 주셔서 감사합니다. – zac1987

답변

5
  • VARCHAR

VARCHAR 저장 가변 길이 문자열. 필요한만큼의 공간 만 사용하기 때문에 고정 길이 유형보다 적은 스토리지를 필요로합니다.

varchar는 값의 길이를 기록하기 위해 1 또는 2 개의 추가 바이트를 사용합니다. 예를 들어 varchar (10)는 최대 11 바이트의 저장 공간을 사용합니다. varchar는 공간을 절약하기 때문에 성능을 향상시킵니다. 그러나 행은 가변 길이이므로 추가 작업을 할 때 증가 할 수 있습니다. 행이 성장하고 더 이상 원래의 위치에 맞는 경우, 동작은

  • CHAR

문자는 고정 길이는, MySQL은 항상 지정된 충분한 공간을 할당한다 ... 스토리지 엔진에 의존합니다 문자 수. CHAR 값을 저장할 때, MySQL은 후행 공백을 제거한다. 값은 비교를 위해 필요에 따라 공백으로 채워집니다.

char은 매우 짧은 문자열을 저장하거나 모든 값이 거의 동일한 길이 인 인 경우 유용합니다. 예를 들어, CHAR는 사용자 길이가 항상 같은 길이 인 에 대한 MD5 값에 적합한 선택입니다.

고정 길이 행이 단편화되지 않으므로 char이 자주 변경되는 데이터의 경우 VARCHAR보다 낫습니다.

+0

지금 나는 빈번한 갱신 가치에 관하여 CHAR의 이득을 본다. 고맙습니다. – zac1987

+0

Sidenote : MD5 해시 또는 해시에 대해서는 char이 좋은 선택이라고는 말할 수 없습니다. 16 진수와 같은 다른 인코딩 대신 이진 형식으로 저장해야합니다. – Luc

+0

나는 조회가 더 빠르다고 믿는다. 데이터베이스가 길이 계산을하지 않고 즉시 어디로 가야하는지 정확히 알고 있기 때문에, 요즘 너무 눈에 띄지 않을 수도있다. –

관련 문제