programing

TEXT 또는 VARCHAR을 사용하는 것이 더 나은 DATATYPE은 무엇입니까?

nasanasas 2020. 12. 4. 08:24
반응형

TEXT 또는 VARCHAR을 사용하는 것이 더 나은 DATATYPE은 무엇입니까?


이 질문은 성능크기 두 가지를 기반으로 합니다.

TEXT 또는 VARCHAR을 사용하는 것이 더 나은 DATATYPE은 무엇입니까? 영향을 미치고 어떤 영향을 미칠 성능을 기반으로합니까?


그것은 당신이 그것을 사용하는 것에 달려 있습니다. 그런 일반적인 대답을하는 것은 싫지만 사실입니다. 일반적으로 가능한 한 구체적으로 데이터 유형을 가져 오십시오. 문자열이 문자의 상한을 초과하지 않는 경우 VARCHAR조금 더 효율적이기 때문에 함께 가십시오 . 더 많은 공간이 필요하면 TEXT. 텍스트가 얼마나 많은 공간을 차지할 지 확실하지 않은 경우에는를 사용해야합니다 TEXT. 성능 차이는 그다지 크지 않으며, 나중에 요구 사항이 변경 될 때 변경해야하는 위험보다 미래를 대비하는 것이 좋습니다. 내 2 센트.


주석에서 Pitarou는 MySQL 쿼리에 대한 임시 테이블을 생성하면 (이 참조 ) TEXT열이 메모리에 저장되지 않고 디스크에서 읽어야하므로 속도가 훨씬 느리다고 지적합니다. ( 소스 , 페이지 하단.)하지만 대부분의 쿼리에서는 중요하지 않습니다.

PostgreSQL이 어떻게 비교되는지 궁금한 사람이있는 경우 CHAR, VARCHAR 및 TEXT가 모두 동일하게 잘 수행된다는 것을 보여주는 이 벤치 마크찾았 습니다. 따라서 Postgres를 사용하는 경우 사용하는 유형은 중요하지 않습니다.


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

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

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

따라서 TEXT 보다 제한높은 VARCHAR을 사용하는 것이 좋습니다. 요구 사항이 64K 이상이면 그에 따라 MEDIUMTEXT 또는 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은 u가 값을 제공함에 따라 소비합니다.

성능에 따라 VARCHAR은 TEXT보다 빠릅니다.


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

반응형