답변:
VARCHAR
가변 길이입니다.
CHAR
고정 길이입니다.
콘텐츠가 고정 된 크기 인 경우으로 더 나은 성능을 얻을 수 CHAR
있습니다.
자세한 설명 은 CHAR 및 VARCHAR 유형 의 MySQL 페이지를 참조하십시오 (주석도 읽으십시오).
Values in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 255 before MySQL 5.0.3, and 0 to 65,535 in 5.0.3 and later versions.
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 는 더 크게 말합니다.
CHAR은 고정 길이 필드입니다. VARCHAR은 가변 길이 필드입니다. 이름과 같이 길이가 가변적 인 문자열을 저장하는 경우 VARCHAR을 사용하십시오. 길이가 항상 같으면 약간 더 크기가 작고 약간 빠르기 때문에 CHAR을 사용하십시오.
고성능 MySQL 책 에 따르면 :
VARCHAR 은 가변 길이 문자열을 저장하며 가장 일반적인 문자열 데이터 유형입니다. 필요한만큼의 공간 만 사용하므로 고정 길이 유형보다 저장 공간이 적게 필요할 수 있습니다 (즉, 더 짧은 값을 저장하는 데 사용되는 공간이 적습니다). ROW_FORMAT = FIXED로 작성된 MyISAM 테이블은 예외이며 각 행에 대해 디스크의 고정 된 공간을 사용하므로 공간을 낭비 할 수 있습니다. VARCHAR은 공간을 절약하므로 성능을 향상시킵니다.
CHAR 은 고정 길이입니다. MySQL은 항상 지정된 수의 문자에 충분한 공간을 할당합니다. CHAR 값을 저장할 때 MySQL은 후행 공백을 제거합니다. (이것은 MySQL 4.1 및 이전 버전의 VARCHAR에서도 마찬가지였습니다. CHAR 및 VAR CHAR은 논리적으로 동일하며 스토리지 형식에서만 다릅니다.) 값은 비교에 필요한대로 공백으로 채워집니다.
VARCHAR
필요에 따라 동적으로 메모리를 할당해야하므로 성능이 저하되지 CHAR
않습니까?
문자 또는 varchar-길이를 괄호로 표시 할 수있는 텍스 털 데이터를 입력하는 데 사용됩니다 (예 : char).
(
및 )
하지 괄호 괄호입니다.
(
와 )
브래킷, 많은 영국인은 아마 단어 "괄호"구두점을 참조 할 수있는 영어의 방언이 있다는 것을 인식하지 않습니다. "괄호"를 "브래킷"보다 선호하는 강력한 사례가 있습니다. 아마도 국제 사용자를 대상으로 할 때 최대한 명확한 옵션 일 것입니다. 그러나 "브래킷"보다는 잘못된 경우 일뿐입니다.