varchar (255) vs tinytext / tinyblob 및 varchar (65535) vs blob / text


92

정의 :

VARCHAR : 길이 범위는 1 ~ 255 자입니다. VARCHAR 값은 BINARY 키워드가 제공되지 않는 한 대소 문자를 구분하지 않는 방식으로 정렬되고 비교됩니다. x + 1 바이트
TINYBLOB, TINYTEXT : 최대 길이가 255 (2 ^ 8-1) 문자 x + 1 바이트 인 BLOB 또는 TEXT 열

이를 바탕으로 다음 표를 작성합니다.

CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255),
  `lastname` tinytext,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

아니면 varchar 또는 tinytext를 만드는 것이 더 좋으며 그 이유는 무엇입니까?

다음의 경우에도 동일합니까?

VARCHAR : 길이 범위는> 255 자입니다. VARCHAR 값은 BINARY 키워드가 제공되지 않는 한 대소 문자를 구분하지 않는 방식으로 정렬되고 비교됩니다. x + 2 바이트
BLOB, TEXT 최대 길이가 65535 (2 ^ 16-1) 문자 x + 2 바이트 인 BLOB 또는 TEXT 열


VARCHAR은 메모리 오버 헤드가 덜 필요하지만 일반적으로 메모리에서 완전히 읽히므로 마지막에 VARCHAR은 여전히 ​​더 많은 메모리를 사용할 수 있습니다. 둘 다 다릅니다. BLOB를 사용하여 이미지, 오디오 및 기타 멀티미디어 데이터와 같은 이진 데이터를 저장합니다. 및 VARCHAR은 제한까지 모든 크기의 텍스트를 저장합니다.
Book Of Zeus

답변:


10

이 경우 varchar더 좋습니다.

varchar1 65535 문자에서 할 수있다.

VARCHAR 열의 값은 가변 길이 문자열입니다. 길이는 MySQL 5.0.3 이전에는 0에서 255까지, 5.0.3 이상 버전에서는 0에서 65,535 사이의 값으로 지정할 수 있습니다. MySQL 5.0.3 이상에서 VARCHAR의 유효 최대 길이는 최대 행 크기 (65,535 바이트, 모든 열에서 공유 됨) 및 사용 된 문자 집합의 영향을받습니다. 섹션 E.7.4,“테이블 열 개수 및 행 크기 제한”을 참조하십시오.

Blob은 파일의 별도 섹션에 저장됩니다.
데이터에 포함하려면 추가 파일 읽기가 필요합니다.
이러한 이유로 varchar를 훨씬 빠르게 가져옵니다.

자주 액세스하지 않는 큰 Blob이있는 경우 Blob보다 더 의미가 있습니다.
별도의 파일 (일부)에 Blob 데이터를 저장하면 코어 데이터 파일이 더 작아 지므로 더 빨리 가져올 수 있습니다.


이것이 더 나은지 여부는 데이터 액세스 패턴에 따라 다릅니다.
Michael Mior

1
어떤 별도의 파일이 될 수 있습니까?
glglgl

1
Blob은 별도의 파일에 저장되지 않습니다. 그러나 나머지 열과는 별도의 물리적 위치에 저장됩니다.
Michael Mior 2011 년

1
이는 액세스 빈도뿐만 아니라 데이터에 대해 수행되는 작업에 따라 달라집니다. 예를 들어, 테이블 스캔 (일반적으로 좋지 않음)이 필요하지만 텍스트 열이 아닌 쿼리는 스캔 된 데이터의 양이 많을수록 더 나빠질 것입니다.
Michael Mior 2011 년

1
또한이 열을 사용하지 않는 파일 정렬은 쿼리 최적화 프로그램이이 데이터를 가져 오지 못할만큼 똑똑한 지 확실하지 않지만 데이터가 페이지 외부에 저장되는 경우 더 효율적일 수 있다고 생각합니다.
Michael Mior 2011 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.