데이터 테이블에서 각 데이터 열의 길이가 고정되면 각 데이터 행의 길이도 고정됩니다. 데이터 테이블에 가변 길이의 데이터 열이 있으면 각 데이터의 길이도 고정됩니다. 행이 가변적이면 특정 데이터 테이블의 데이터 행 길이가 가변적인 경우 저장 공간을 절약하기 위해 MySQL은 데이터 테이블의 고정 길이 데이터 열을 해당 가변 길이 유형으로 변환합니다. 길이가 4자 미만인 char 데이터 열은 varchar 유형으로 변환되지 않습니다
테이블의 필드가 varchar인 경우에도 이 테이블에 char 필드를 만드는 것이 의미가 있나요?
伊谢尔伦2017-05-24 11:35:08
먼저 char과 varchar의 차이점을 이해해야 합니다.
1. CHAR의 길이는 고정되어 있지만 VARCHAR2의 길이는 변경될 수 있습니다. 예를 들어 문자열 "abc"를 저장하려면 CHAR(10)의 경우 저장하는 문자가 10바이트(널 문자 7개 포함)를 차지한다는 의미입니다. 동일한 VARCHAR2(10)은 3바이트의 길이만 차지하며, 10은 최대값만 저장합니다. 10자 미만일 경우 실제 길이에 따라 저장됩니다.
2. CHAR는 VARCHAR2보다 약간 더 효율적입니다.
3. 현재 VARCHAR은 VARCHAR2의 동의어입니다. 업계 표준 VARCHAR 유형은 빈 문자열을 저장할 수 있지만 Oracle은 향후 그렇게 할 수 있는 권한을 보유하고 있지만 그렇게 하지 않습니다. Oracle은 VARCHAR2 데이터 유형을 개발했습니다. 이 유형은 데이터베이스의 varchar 열이 NULL 값을 저장할 수 있는 기능을 변경합니다. 이전 버전과의 호환성을 원할 경우 Oracle은 VARCHAR 대신 VARCHAR2를 사용할 것을 권장합니다.
언제 CHAR를 사용해야 하며 언제 varchar2를 사용해야 합니까?
CHAR와 VARCHAR2는 상충되는 단일체이며, 둘은 상호보완적입니다.
VARCHAR2는 CHAR보다 공간을 절약하지만, CHAR보다 효율성이 약간 떨어집니다. 데이터베이스 설계에서 흔히 '효율성을 위한 거래 공간'이라고 부르는 것입니다.
VARCHAR2는 CHAR보다 공간을 절약하지만, VARCHAR2 컬럼이 자주 수정되고 수정되는 데이터의 길이가 매번 달라지는 경우 'Row Migration' 현상이 발생하여 중복 I/O가 발생하므로 이를 피해야 합니다. 데이터베이스 설계 및 조정 시에는 VARCHAR2 대신 CHAR를 사용하는 것이 좋습니다.
이 답변은 Baidu의 답변 https://zhidao.baidu.com/ques...에서 인용되었습니다.
답변이 매우 자세하다고 생각합니다