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 바이트) 및 사용 된 문자 집합에 따라 다름).
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
'programing' 카테고리의 다른 글
3D 포인트 클라우드에서 표면 재구성을위한 강력한 알고리즘? (0) | 2020.12.04 |
---|---|
C #을 사용하여 어떤 프로세스가 파일을 잠 갔는지 어떻게 알 수 있습니까? (0) | 2020.12.04 |
IFRAME의 내용을 지우는 방법은 무엇입니까? (0) | 2020.12.04 |
C # new 문 뒤의 중괄호는 무엇을합니까? (0) | 2020.12.04 |
JDK는 "상향"또는 "역방향"과 호환됩니까? (0) | 2020.12.04 |