programing

VARCHAR 크기 제한이 중요합니까?

javajsp 2023. 11. 5. 11:01

VARCHAR 크기 제한이 중요합니까?

중복 가능:
MySQL 테이블에서 varchar 길이의 중요도

VARCHAR를 사용할 때(짧은 문자열에 대한 올바른 데이터 유형이라고 가정할 때) 크기가 중요합니까?20자로 설정하면 공간을 적게 차지할까요, 255자보다 빠를까요?

예, 여러 열을 인덱싱할 때 중요합니다.

접두사의 길이는 최대 1000바이트(InnoDB 테이블의 경우 767바이트)가 될 수 있습니다.CREATE TABLE 문의 접두사 길이는 문자 수로 해석되는 반면 접두사 제한은 바이트 단위로 측정됩니다.멀티바이트 문자 집합을 사용하는 열의 접두사 길이를 지정할 때는 이를 고려해야 합니다.

출처 : http://dev.mysql.com/doc/refman/5.0/en/column-indexes.html

라틴 1 집합에서는 최대 3개의 열만 지정할 수 있습니다.varchar(255).
최대 50개의 열을 지정할 수 있습니다.varchar(20)

직접적으로 적절한 인덱스가 없으면 쿼리 속도가 느려집니다.

보관에 있어서는 차이가 없지만,
~하듯이varchar을 상징하는variable-length strings

일반적으로 VARCHAR 필드의 경우, 각 필드에 저장된 데이터의 양에 따라 최대 크기가 아닌 디스크의 풋프린트가 결정됩니다(항상 동일한 풋프린트를 갖는 CHAR 필드와는 달리).

인덱스 900바이트(문자 길이 900바이트 인덱스 크기 제한)의 모든 필드 내에 저장된 총 데이터에 상한이 있습니다.

필드를 크게 만들수록 사용자가 의도한 목적이 아닌 다른 용도로 사용하려고 할 가능성이 높아지며, 값을 표시하는 데 필요한 화면 실소유주가 많아지므로 가능한 한 크게 만들면 디자인을 다시 방문해야 하는 수고를 덜 수 있다고 가정하는 것이 좋습니다.

실제 차이점은 다음과 같습니다.

  • TINYTEXT 및 기타 TEXT 필드는 MySQL 힙 내부의 메모리 내 행과 별도로 저장되는 반면 VARCHAR() 필드는 최대 64k 제한을 추가합니다(따라서 TINYTEXT에서 64k 이상을 사용할 수 있지만 VARCHAR는 사용하지 않음).

  • TINYTEXT 및 기타 'blob-like' 필드는 SQL 계층(MySQL)이 사용될 때마다 디스크의 임시 테이블을 사용하도록 강제하지만 VARCHAR는 여전히 '메모리 내'로 정렬됩니다(전체 너비의 경우 CHAR로 변환됨).

  • InnoDB는 내부적으로 그것이 작은 텍스트인지 아니면 varchar인지에 대해 별로 신경 쓰지 않습니다.두 개의 테이블(하나는 VARCHAR(255), 다른 하나는 TINYINT(티니인트)로 확인하고 둘 다에 레코드를 삽입하는 것은 매우 쉽습니다.두 페이지 모두 16k 페이지를 사용하지만 오버플로 페이지를 사용하는 경우 'SHOW TABLE STATUS'에 TINYTEXT 테이블이 최소 32k로 표시되어야 합니다.

저는 보통 VARCHAR(255)를 선호합니다. 이들은 단일 행에 대해 너무 많은 힙 조각화를 일으키지 않으며 MySQL 내의 메모리에서 단일 64k 개체로 처리할 수 있습니다.InnoDB 크기 차이는 무시할 수 있습니다.

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

VARCHAR(4)(대 CHAR(4))의 바이트를 나타내는 표가 있습니다.

문자열이 없는 간단한 VARCHAR(4), 단 1바이트.그러면 문자열이 없는 간단한 VARCHAR(255)는 1바이트가 됩니다.'ab'인 VARCHAR(4)는 3바이트이고 'ab'인 VARCHAR(255)는 3바이트입니다.똑같지만 길이 제한으로 :)

이것은 성능에 영향을 주지 않습니다.이 경우 제약 조건은 데이터 무결성을 보장하는 데 도움이 될 뿐입니다.

20자로 설정하면 처음 20자만 저장됩니다.예, 255자 미만의 공간을 차지합니다. :).

필요한 저장 공간은 다음과 같습니다.

VARCHAR(L),VARBINARY(L)L+ 열 값에 0~255바이트가 필요한 경우 1바이트,L+ 값이 255바이트 이상 필요한 경우 2바이트

그렇게VARCHAR는 문자열에 대한 공간과 문자열 길이에 대한 하나 또는 두 개의 추가 바이트만 필요합니다.

언급URL : https://stackoverflow.com/questions/4324872/does-varchar-size-limit-matter