[sql] VARCHAR과 CHAR의 차이점은 무엇입니까?

MySQL에서 VARCHAR과 CHAR의 차이점은 무엇입니까?

MD5 해시를 저장하려고합니다.



답변

VARCHAR 가변 길이입니다.

CHAR 고정 길이입니다.

콘텐츠가 고정 된 크기 인 경우으로 더 나은 성능을 얻을 수 CHAR있습니다.

자세한 설명 은 CHAR 및 VARCHAR 유형 의 MySQL 페이지를 참조하십시오 (주석도 읽으십시오).


답변

  1. 고정 길이의 문자열 값을 저장하는 데 사용됩니다 .
  2. 최대 번호 데이터 유형이 보유 할 수있는 문자 수는 255 자 입니다.
  3. 그것은이다 50 % 더 빠른 VARCHAR보다.
  4. 정적 메모리 할당을 사용합니다 .

바차

  1. 가변 길이 영숫자 데이터 를 저장하는 데 사용됩니다 .
  2. 이 데이터 유형이 보유 할 수있는 최대 값은 최대
    • MySQL 이전 5.0.3 : 255 자 .
    • Post-MySQL 5.0.3 : 65,535자가 행에 대해 공유되었습니다.
  3. 그것은의 느린 CHAR보다.
  4. 동적 메모리 할당을 사용합니다 .

답변

CHAR 대 VARCHAR

CHAR는 고정 길이 크기 변수
에 사용됩니다. VARCHAR은 가변 길이 크기 변수에 사용됩니다.

예 :

Create table temp
(City CHAR(10),
Street VARCHAR(10));

Insert into temp
values('Pune','Oxford');

select length(city), length(street) from temp;

출력은

length(City)          Length(street)
10                    6

결론 : 스토리지 공간을 효율적으로 사용하려면 가변 길이가 가변 인 경우 VARCHAR 대신 CHAR을 사용해야합니다.


답변

CHAR(x)열은있을 수 정확히 x 문자. 열 수 있습니다 최대 문자.
VARCHAR(x) x

MD5 해시는 항상 같은 크기이므로을 사용해야합니다 CHAR.

그러나 먼저 MD5를 사용해서는 안됩니다. 그것은 알려진 약점을 가지고 있습니다.
대신 SHA2를 사용하십시오.
암호를 해싱하는 경우 bcrypt를 사용해야합니다.


답변

MySQL에서 VARCHAR과 CHAR의 차이점은 무엇입니까?

이미 답변을 제공하기 위해 OLTP 시스템 또는 업데이트가 자주 발생하는 시스템 에서 업데이트 중에 열 조각화 CHAR가 가능하므로 가변 크기 열에도 사용 하는 것이 VARCHAR좋습니다.

MD5 해시를 저장하려고합니다.

보안이 중요한 경우 MD5 해시는 최선의 선택이 아닙니다. 그러나 해시 함수를 사용하는 BINARY경우 대신 해시 유형을 고려 하십시오 (예 : MD5는 16 바이트 해시를 생성하므로 16 진수를 나타내는 32 자 BINARY(16)대신에 충분 하므로 CHAR(32)공간을 절약하고 성능을 향상시킬 수 있습니다.


답변

입력 한 문자가 선언 된 길이보다 짧은 경우 Varchar는 후행 공백을 차단하지만 char은 그렇지 않습니다. Char는 공백을 채우고 항상 선언 된 길이의 길이입니다. 효율성 측면에서 varchar는 문자를 잘라내어 더 많은 조정을 할 수 있기 때문에 더 능숙합니다. 그러나 char의 정확한 길이를 알고 있으면 char이 약간 더 빠른 속도로 실행됩니다.


답변

오늘날 대부분의 RDBMS에서는 동의어입니다. 그러나 여전히 구별이있는 시스템의 경우 CHAR 필드는 고정 너비 열로 저장됩니다. 이를 CHAR (10)으로 정의하면 10 개의 문자가 테이블에 기록되며, 여기서 “패딩”(일반적으로 공백)은 데이터가 사용하지 않는 공간을 채우는 데 사용됩니다. 예를 들어, “bob”을 저장하면 ( “bob”+7 공백)으로 저장됩니다. VARCHAR (가변 문자) 컬럼은 CHAR 컬럼이 수행하는 추가 공간을 낭비하지 않고 데이터를 저장하기위한 것입니다.

항상 그렇듯이 Wikipedia 는 더 크게 말합니다.