programing

TEXT와 VARCHAR 중 어떤 DATATYPE을 사용하는 것이 더 좋습니까?

newsource 2022. 11. 27. 21:18

TEXT와 VARCHAR 중 어떤 DATATYPE을 사용하는 것이 더 좋습니까?

이 질문은 퍼포먼스와 크기 두 가지를 기반으로 합니다.

TEXT와 VARCHAR 중 어떤 DATATYPE을 사용하는 것이 더 좋습니까?퍼포먼스에 따라 어떤 것이 영향을 미치고 어떤 것이 영향을 미칩니까?

어디에 쓰느냐에 따라 다르죠.그런 뻔한 대답을 하기는 싫지만, 사실이에요.일반적으로 가능한 한 구체적인 데이터 유형을 얻도록 하십시오.문자열이 일부 문자의 상한을 초과하지 않는 경우는, 다음과 같이 합니다.VARCHAR그게 좀 더 효율적일 테니까.더 많은 공간이 필요하시면,TEXT텍스트가 어느 정도의 공간을 차지할지 모르는 경우는, 다음과 같이 하는 것이 좋습니다.TEXT성능 차이는 그다지 크지 않습니다.요건이 변경되었을 때 나중에 변경해야 하는 위험보다는 미래에 대비하는 것이 좋습니다.내 의견일 뿐이야.


코멘트에서 Pitarou는 MySQL이 쿼리의 임시 테이블을 작성하면(이것을 참조),TEXT열은 메모리에 저장되지 않고 디스크에서 읽어야 하므로 속도가 훨씬 느립니다(소스, 페이지 하단).그러나 대부분의 질문에는 문제가 되지 않습니다.

Postgre가 어떻게 이 일을 할 수 있는지 궁금할 때를 대비해서SQL 비교 결과 CHAR, VARCHAR 및 TEXT가 모두 동일한 성능을 발휘한다는 을 알 수 있었습니다.따라서 Postgres를 사용하고 있다면 어떤 타입을 사용하든 상관없습니다.

V 5.0.3 이상에서는 VARCHAR 제한이 0-256에서 0-65,535로 증가합니다(최대 행 크기(65,535바이트, 모든 열에서 공유됨) 및 사용된 문자 집합에 따라 다름).

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

길이가 64k로 고정된 TEXT를 사용하는 경우, 더 적은 제한이 필요하더라도

따라서 TEXT보다 제한이 높은 VARCHAR을 사용하는 것이 좋습니다.요건이 64K 이상이면 MEDIURE TEXT 또는 LONGTEXT를 사용합니다.

TEXT 테이블에 대한 쿼리는 VARCHAR 테이블에 대한 쿼리보다 항상 3배 느렸습니다(평균: VARCHAR 테이블의 경우 0.10초, TEXT 테이블의 경우 0.29초).그 차이는 100% 반복할 수 있습니다.

http://forums.mysql.com/read.php?24,105964,105964 벤치마크

VARCHAR 레코드당 허용되는 문자 수에 대한 제한을 설정할 수 있습니다. 텍스트는 사실상 무제한입니다.퍼포먼스에 대해서는 확실히 모르지만, 보다 구체적인 데이터 타입(varchar)이 고속이라고 생각합니다.

VARCHAR은 크기가 한정되어 있기 때문에 퍼포먼스가 향상됩니다.사실 MySQL을 사용한 모든 경험에서 검색 작업은 항상 TEXT보다 VARCHAR에서 더 빨랐습니다.어쨌든, 제 경험을 바탕으로 한 것입니다.자세한 것은, 메뉴얼을 참조해 주세요.

데이터 유형에 따라 다릅니다.

필드가 고정 길이(예: 32자 해시 값)인 경우 CHAR을 사용합니다.모든 엔트리가 행당 동일한 공간을 차지하기 때문에 성능이 향상됩니다.

VARCHAR의 표준 제한은 255자였지만, 지금은 늘어난 것 같습니다.TEXT는 상당히 길어서 일반적으로 블로그의 전체 투고와 같은 큰 콘텐츠와 제한을 원하지 않는 코멘트에만 사용됩니다.

사이즈에 관해서는 VARCHAR과 TEXT는 필요한 것만 저장하기 때문에 차이가 없습니다(또는 거의 없음).CHAR 필드는 항상 할당된 길이를 차지합니다.

퍼포먼스 면에서는 보통 VARCHAR이 고속입니다.VARCHAR도 인덱싱할 수 있기 때문에 검색 속도가 빨라집니다.

MySQL은 임시 테이블을 만드는 동안 내부적으로 TEXT를 varchar로 변환합니다.따라서 가능하면 VARCHAR을 사용하는 것이 좋습니다.TEXT 컬럼과 관련된 몇 가지 사소한 버그가 있습니다.

http://bugs.mysql.com/bug.php?id=36676

내 의견에 따르면 VARCHAR은 글자 길이를 알고 있을 때 가장 좋은 옵션입니다.또한 가비지 메모리 할당 및 공간 문제도 줄일 수 있습니다.TEXT는 255를 소비합니다.VARCHAR은 VARCHAR에 값을 부여하면 소비됩니다.

퍼포먼스에 따르면 VARCHAR도 TEXT보다 빠릅니다.

텍스트와 varchar에는 미묘한 차이가 있습니다.다음과 같은 표가 있습니다.

CREATE TABLE `test`.`tbl`(
  `kee` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `txt` TEXT(100),
  `vrchr` VARCHAR(100),
  PRIMARY KEY (`kee`)
);

행을 삽입합니다.

 INSERT INTO `tbl`
            (`txt`,
             `vrchr`)
VALUES ('1        
         2
         3',
        '1
         2
         3');

txt 열의 값은 다음과 같습니다.
1
2
3

및 컬럼 vrchr 값은 다음과 같습니다.
1

언급URL : https://stackoverflow.com/questions/1203710/which-datatype-is-better-to-use-text-or-varchar