>  기사  >  데이터 베이스  >  mysql에서 char과 varchar의 차이점

mysql에서 char과 varchar의 차이점

黄舟
黄舟원래의
2017-09-07 13:12:411644검색

MySQL 튜토리얼에서 char과 varchar의 차이점은 둘 다 문자열을 저장하는 데 사용되지만 저장 방법이 다르다는 것입니다. char은 고정 길이를 갖는 반면 varchar는 가변 길이 문자 유형입니다.

char와 varchar의 차이점

char(13) 'www.jb51.net'과 같은 고정 길이에는 12자의 저장 공간이 필요합니다.

varchar(13) 'www.jb51.net과 같은 가변 길이 '는 저장 공간 13자가 필요합니다.

위에서 볼 수 있듯이 char의 길이는 고정되어 있습니다. 얼마나 많은 데이터를 저장하더라도 항상 고정된 길이를 갖습니다. Varchar는 가변 길이이지만 위치를 저장하는 데 사용되는 전체 길이에 1자를 추가해야 합니다. 따라서 실제 애플리케이션에서는 사용자가 자신의 데이터 유형에 따라 이를 수행할 수 있습니다.

char와 varchar의 속도 차이를 살펴보겠습니다.

코드는 다음과 같습니다

mysal>create tabe ab(v varchar(4),c char(4)); 
query ok ,0 rows affected(0.02 sec) 
mysql>insert into abc values('ab ','ab ') 
query ok ,1 row affected(0.00 sec); 
mysql->select concat(v ,'+') ,concat(c ,'+') form abc 
ab + | ab+ 
1rows in set (0.00 sec)


위에서 볼 수 있듯이 char은 어떤 이유에서인지 길이가 고정되어 있어서 처리속도는 varchar보다 훨씬 빠르지만, 저장공간이 많이 필요하기 때문에 저장공간이 크지는 않지만, 속도 요구사항이 있다면, char 유형을 사용할 수 있습니다. 그렇지 않으면 varchar 유형으로 인스턴스화할 수 있습니다.

참고:

char 문자 유형을 사용할 때 내용 뒤에 공백이 있으면 관련 처리를 해야 하며 그렇지 않으면 공백이 자동으로 삭제됩니다.

권장사항:

myisam 스토리지 엔진은 가변 길이 데이터 열 대신 고정 길이 데이터 열을 사용할 것을 권장합니다.
메모리 저장 엔진은 현재 고정 데이터 행 저장을 사용하므로 char varchar 열을 사용하든 상관없습니다.
innodb 저장 엔진에서는 varchar 유형 사용을 권장합니다


다음은 다른 네티즌이 추가한 내용입니다

char는 고정 길이 유형, varchar는 가변 길이 유형입니다.
char(M) 유형의 데이터 열에서 각 값은 M 바이트를 차지합니다. 길이가 M보다 작으면 MySQL은 오른쪽에 공백 문자를 사용합니다. 위로. (패딩 공백 문자는 검색 작업 중에 제거됩니다.) varchar(M) 유형 데이터 열에서 각 값은 해당 길이를 기록하는 데 충분한 바이트와 1바이트만 차지합니다. 즉, 총 길이는 L+1바이트입니다. ).

열 유형 변환이 필요한지 여부를 결정하기 위해 MySQL에서 사용되는 규칙

 1. 데이터 테이블에서 각 데이터 열의 길이가 고정되면 각 데이터 행의 길이도 고정됩니다.
 2. 데이터 테이블에 가변 길이의 데이터 열이 있는 한 각 데이터 행의 길이는 가변적입니다.
  3. 특정 데이터 테이블의 데이터 행 길이가 가변적인 경우, MySQL은 저장 공간을 절약하기 위해 데이터 테이블의 고정 길이 데이터 열을 해당 가변 길이 유형으로 변환합니다.
예외: 길이가 4자 미만인 char 데이터 열은 varchar 유형으로 변환되지 않습니다.

MyISAM 테이블의 경우 Char를 사용해 보세요. 특히 수정이 자주 필요하고 쉽게 조각화되는 myisam 및 isam 데이터 테이블의 경우 더욱 그렇습니다. 디스크 공간을 차지하는 단점;

InnoDB 테이블의 경우 데이터 행의 내부 저장 형식이 고정 길이 데이터 행과 가변 길이 데이터 행을 구분하지 않기 때문입니다(모든 데이터 행은 헤더 부분을 공유하며, this 헤더 부분은 관련 데이터 열에 대한 포인터를 저장하므로 char 유형을 사용하는 것이 반드시 varchar 유형을 사용하는 것보다 나은 것은 아닙니다. 실제로 char 유형은 일반적으로 varchar 유형보다 더 많은 공간을 차지하므로 공간 사용량 및 디스크 I/O 감소 측면에서 varchar 유형을 사용하는 것이 더 유리합니다.

기사 2:
문자는 가장 일반적인 데이터베이스의 일종이지만 데이터베이스마다 다른 것 같습니다. 예를 들어 Oracle에는 varchar2가 있습니다. 그러나 MySQL은 char과 varchar에 가장 중점을 두는 것 같습니다.
차이점을 알려주세요. Char는 길이가 고정되어 있지만 varchar는 특정 길이에 따라 저장 공간을 사용합니다. 예를 들어 char(255) 및 varchar(255)에서 "hello world" 문자열을 저장할 때 char은 255의 공백을 사용하여 11자를 저장하지만 varchar는 255를 사용하지 않습니다. 먼저 길이를 계산한 다음 11에 계산된 문자열 길이 정보(일반적으로 1-2바이트)를 더하면 varchar가 불확실한 길이를 저장할 때 저장 공간을 크게 줄일 수 있습니다.

varchar가 char보다 훨씬 똑똑한 것 같은데 char도 유용할까요? 여전히 많은 장점이 있습니다.

먼저 집 번호 101, 201과 같은 매우 짧은 정보를 저장합니다. varchar도 정보의 길이를 저장하기 위해 바이트를 차지하기 때문에 이러한 짧은 정보는 char를 사용해야 합니다. 이득의 가치가 있습니다.

두 번째, 고정 길이. 예를 들어 uuid가 기본 키로 사용되는 경우 char이 더 적합합니다. 길이가 고정되어 있기 때문에 varchar의 동적 길이 기반 특성이 사라지고 길이 정보도 차지하게 됩니다.

셋, 열이 매우 자주 변경됩니다. varchar는 저장될 때마다 길이를 구하기 위해 추가적인 계산이 필요하기 때문에, 길이가 너무 자주 바뀌면 계산에 많은 에너지가 소비되므로 char에는 필요하지 않습니다.


varchar에 대한 또 다른 질문은 varchar가 저장 공간에 자동으로 적응할 수 있기 때문에 내 varchar(8) 및 varchar(255) 저장 공간이 동일해야 하므로 테이블을 디자인할 때마다 더 큰 방향으로 가야 한다는 것입니다. 앞으로 돈이 부족해지는 문제를 피하세요. 이 생각이 맞나요? 대답은 '아니요'입니다. mysql은 테이블 정보를 메모리에 저장합니다(첫 번째 쿼리 후에 캐시됩니다. 이는 Linux에서는 분명하지만 Windows에서는 없는 것 같습니다. 현재로서는 메모리 애플리케이션이 왜 그런지 모르겠습니다). varchar가 크면 문제가 발생합니다. 따라서 요청 시 요청해야 합니다.

요약: DZ의 데이터 테이블을 주의 깊게 살펴보면 고정 길이 필드는 기본적으로 여전히 char를 사용하고 있습니다....

위 내용은 mysql에서 char과 varchar의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.