programing

MySQL의 VARCHAR vs TEXT

powerit 2023. 10. 20. 14:51
반응형

MySQL의 VARCHAR vs TEXT

나는 두 개의 필드를 가지고 있습니다. 하나는 저장합니다.excerpt최대 크기가 500자이고, 다른 하나는 a를 저장합니다.description최대 1만자까지 가능합니다.

어떤 데이터 유형을 사용해야 하는지,TEXT아니면VARCHAR? 그 이유는?

MySQL 5.0.3 이후의 VARCHAR는 ~65,000자를 사용할 수 있습니다.그러나 이것은 제가 왜 한 종류와 다른 종류를 사용해야 하는지를 말해주지 않습니다.

저는 제가 사용해야 한다고 추론하고 있습니다.VARCHAR내가 크기 제한을 지정할 수 있기 때문에 발췌를 위해, 그리고.TEXT를 위해description크기가 클수록 필드입니다.

따라VARCHARA와 같은 방식으로 저장됩니다.TEXT/BLOB야전에 나서다InnoDB트랜잭션 처리, 참조 무결성 및 크래시 복구에 사용하는 것으로 알고 있습니다. (검색하려면 다른 Disk 읽기가 필요할 수 있음).

스토리지 전망 BLOB부터 TEXT 및 Long VARCHAR는 Innodb에서 동일하게 처리됩니다.이것이 Innodb 매뉴얼이 BLOB가 아닌 "긴 열"이라고 부르는 이유입니다.

원천

이 열을 색인할 필요가 없는 경우(이 경우)VARCHAR훨씬 빠름)을 사용할 이유가 없습니다.VARCHAR위에TEXT긴 필드의 경우 - 엔진 고유의 최적화가 있습니다.MySQL길이에 따라 데이터 검색을 조정하려면 올바른 열 유형을 사용해야 합니다.

사용하는 경우MyISAM그 주제에 대한 심도 있는 토론이 여기에 있습니다.

사이의 한가지 차이점VARCHAR그리고.TEXT당신이 A를 선언할 수 있다는 것입니다.DEFAULTa에 대한 조항VARCHAR열, 그러나 a에 대한 것은 아닙니다.TEXT기둥.

@InnoDB에서 두가지를 모두 저장하는것은 Andy가 맞습니다.VARCHAR그리고.TEXT내부적으로도 마찬가지로

FULLTEXT인덱스는 두 가지 모두에서 지원됩니다.VARCHAR그리고.TEXT. 5.6 이전에는 MyISAM을 사용하여 해당 유형의 인덱스를 가져와야 합니다.MySQL 5.6에서는 최종적으로 다음을 지원합니다.FULLTEXTInnoDB에서.신중하게 테스트를 해보셔야겠지만, MyISAM에서 구현한 것과는 다른 결과를 반환하는 것 같기 때문입니다.

그러나 Spinx Search는 MySQL의 구현보다 더 빠르고 풍부한 기능을 제공합니다.Full-Text Search Throwdown(전체 텍스트 검색 드롭다운)에서 내 개요를 봅니다.

@모하마드가 물었습니다.

언제.VARCHAR심사숙고하게 되다LONG VARCHAR? 문자 임계값이 있습니까?

최대 255바이트의 길이를 선언하면 1바이트를 사용하여 주어진 문자열의 길이를 인코딩할 수 있습니다.255바이트 이상의 열 최대 길이를 선언하면 2바이트를 사용하여 길이를 인코딩합니다.

열을 다음과 같이 선언할 수 있습니다.LONG VARCHAR, 하지만 이건 정말 MEDIATEXT에 대한 별칭일 뿐입니다.

mysql> create table test ( l long varchar);

mysql> show create table test\G

CREATE TABLE `test` (
  `l` mediumtext
) ENGINE=InnoDB DEFAULT CHARSET=latin1

내용이 varchar 열에 맞는 경우 varchar를 사용합니다.

Varchar 데이터는 각 행에 저장됩니다.텍스트 데이터는 테이블 외부의 블랍으로 저장됩니다.

이 테스트에 의하면, 바르샤르는 텍스트보다 약 3배 빠릅니다.

언급URL : https://stackoverflow.com/questions/6404628/varchar-vs-text-in-mysql

반응형