programing

MySQL에서 varchar에 대해 255개가 아닌 다른 길이를 선택해야 하는 이유는 무엇입니까?

css3 2023. 7. 29. 08:47

MySQL에서 varchar에 대해 255개가 아닌 다른 길이를 선택해야 하는 이유는 무엇입니까?

CHAR와 VARCHAR의 차이점을 알고 있습니다.

CHAR - 고정 길이

VARCHAR - 가변 길이(크기 + 1바이트)

저는 를 들어, 하만저바는하길대이르옵가한다션싶무알니었습목고엇지인적이진지을에▁but▁e다▁forg니싶▁was▁option▁i▁having▁a었습▁lengtharch▁wanted▁the▁what▁v▁to▁these알하.VARCHAR(50),VARCHAR(100),VARCHAR(255)

데이터베이스에 저장된 값에 따라 실제 사용되는 공간이 달라지기 때문에 의미가 없어 보입니다.

그래서 제 질문은 다음과 같습니다.

모든 막대를 2552로 설정해도 됩니다.) 다른 길이를 지정하려는 이유는 무엇입니까?

저장된 바르샤바의 최대 크기를 제한하지 않으려면 예, 괜찮습니다.그 말을 들으니...

대부분의 경우 막대 크기에 대한 상한을 설정하려고 합니다.메일 목록을 저장하고 있으며 주소 줄에 사용할 공간이 제한되어 있다고 가정합니다.주소 필드의 상한을 설정하면 데이터베이스가 최대 주소 줄 길이를 적용할 수 있습니다.

MySQL 문서에서 발췌한 내용:

CHAR 및 VARCHAR 유형은 유사하지만 저장 및 검색 방법이 다릅니다.MySQL 5.0.3 기준으로 최대 길이와 후행 공백 유지 여부도 다릅니다.

CHAR 및 VARCHAR 유형은 저장할 최대 문자 수를 나타내는 길이로 선언됩니다.예를 들어, CAR(30)는 최대 30자까지 사용할 수 있습니다.

CHAR 열의 길이는 테이블을 생성할 때 선언하는 길이로 고정됩니다.길이는 0에서 255 사이의 값일 수 있습니다.CHAR 값이 저장되면 지정된 길이의 공백이 오른쪽에 추가됩니다.CHAR 값을 검색하면 후행 공백이 제거됩니다.

VARCHAR 열의 값은 가변 길이 문자열입니다.길이는 MySQL 5.0.3 이전의 0에서 255까지의 값으로 지정할 수 있으며 5.0.3 이상 버전에서는 0에서 65,535까지의 값으로 지정할 수 있습니다.MySQL 5.0.3 이상에서 VARCHAR의 유효 최대 길이는 최대 행 크기(65,535바이트, 모든 열에서 공유됨)와 사용되는 문자 집합에 따릅니다.

CHARCHAR와 달리 VARCHAR 값은 1바이트 또는 2바이트 길이 접두사와 데이터로 저장됩니다.길이 접두사는 값의 바이트 수를 나타냅니다.값이 255바이트 이하인 경우 열에 하나의 길이 바이트가 사용되고, 값이 255바이트 이상인 경우 두 개의 길이 바이트가 사용됩니다.

CHAR VS VARCHAR

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

예.

create table emp
(f_name CHAR(20),
 l_name VARCHAR(20)
);

insert into emp values('Suraj','Chandak');

select length(f_name), length(l_name) from emp;

Output will be

length(f_name)          Length(l_name)
   20                       7

CHARCHARVARCHAR에 대한 최상의 답변

편집

  • 열의 최대 상한을 설정할 수 있습니다.
  • 성능과 스토리지가 영향을 미칠 수 있습니다.

감사해요.

고정 길이(정적) 테이블이 더 빠릅니다.테이블의 모든 열이 "고정 길이"인 경우 테이블은 "정적" 또는 "고정 길이"로 간주됩니다.고정 길이가 아닌 열 유형의 예는 VARCHAR, TEXT, BLOB입니다.

http://net.tutsplus.com/tutorials/other/top-20-mysql-best-practices/

따라서 테이블에 varchar, text 또는 blob 필드가 없는 경우 char를 사용하여 테이블을 정적 필드로 만들 수 있습니다.그래야 그들이 더 빠릅니다.

필드는 처음에 1바이트 또는 2바이트만 사용하여 작성되므로 기술적으로 문제 없습니다.그 후에, 그들은 필요에 따라 자랄 것입니다.

하지만 좋은 디자인 원칙은 당신이 필드 길이를 적절하게 설정하는 것을 제안합니다. a) 만약 누군가가 표 체계를 검토하고 특정 필드에 저장된 데이터의 양을 계산하려고 한다면,그들은 특정 필드가 다른 필드보다 더 적은 데이터를 보유한다는 것을 알 수 있으며 b) 삽입 중에 VARCHAR(255)보다 VARCHAR(10) 필드에서 더 적은 공간을 잘라내야 하므로 데이터베이스 엔진이 수행하는 소량의 추가 작업을 방지할 수 있습니다.

여기에서 추가 세부 정보를 볼 수 있습니다.

http://dev.mysql.com/doc/refman/5.0/en/char.html

다른 곳에서 읽은 적이 있습니다. 선택 항목을 정의된 열에 대해 선택 항목을 실행할 때 varchar는 char와 관련된 성능 히트를 제공합니다.문자를 선택할 수도 있습니다. 필드가 항상 일정한 길이이고 성능 문제가 있다는 것을 확실히 알고 있다면...

이 두 값 유형 간의 주요 차이점은 문자열을 비교할 때 적용됩니다.

길이가 미리 정의된 CHAR 열에서는 열 길이 전체에 걸쳐 "실행"해야 하는 반면, VARCHAR 열에서는 열 길이가 아닌 값 길이 전체에 걸쳐 "실행"해야 하므로 대부분의 경우 훨씬 더 빠릅니다.

따라서 필드 길이보다 작은 값 길이는 VARCHAR 필드에 저장된 경우 비교 속도가 빨라집니다.

하지만 저는 바차 길이에 대한 옵션을 가진 목적이 무엇인지 알고 싶었습니다. 예를 들어 VARCHAR(50), VARCHAR(100), VARCHAR(255).

데이터베이스에 저장된 값에 따라 실제 사용되는 공간이 달라지기 때문에 의미가 없어 보입니다.

예를 들어 VARCHAR(500) 대신 VARCHAR(5)를 지정하면 인메모리 임시 테이블을 사용하는 작업과 같이 경우에 따라 성능이 향상될 수 있습니다.

또 다른 경우는 도메인 요구 사항을 충족하기 위해 열 길이를 제한하는 것입니다(값이 일부 최대값보다 크지 않아야 하는 경우).예: DNS의 전체 도메인 이름은 253자를 초과할 수 없습니다.)

역사적으로 그것은 성공적이었습니다.

모든 것을 텍스트로 저장하는 sqlite와 같은 데이터베이스를 보면 더 이상 중요하지 않다는 증거가 나타납니다.

언급URL : https://stackoverflow.com/questions/3161628/why-should-i-ever-choose-any-other-length-than-255-for-varchar-in-mysql