PostgreSQL에서 "varchar"와 "text"유형의 차이점은 무엇입니까?


15

그들 사이의 차이점에 대해 아는 것은 varchar한계 가 있으며, text그렇지 않습니다. 이 문서 에는 이에 대한 언급이 없습니다.

이것이 유일한 차이점입니까? 성능 등에 대한 고려가 없습니까?


1
이것은 실제로 데이터베이스 관리자 로 마이 그 레이션해야합니다 . 서버 관리와 관련이 없습니다.
Evan Carroll

답변:


22

이것의 배경은 다음과 같습니다. 구 Postgres 시스템은 PostQUEL 언어를 사용하고 이름이 지정된 데이터 유형을 사용했습니다 text(다른 사람이 텍스트를 저장하는 유형의 이름이라고 생각했기 때문에). 그런 다음 Postgres는 SQL을 언어로 사용하도록 변환되었습니다. text유형 을 바꾸는 대신 SQL 호환성을 달성하기 위해 새로운 유형 varchar이 추가되었습니다. 그러나 두 유형 모두 내부적으로 동일한 C 루틴을 사용합니다.

이제 어느 곳에서나 다른 곳에서는 text파생 할 수없는 경우를 위해 기본 유형으로 하드 코딩됩니다. 또한 대부분의 함수는 text인수를 받거나을 반환 하는 경우에만 사용할 수 있습니다 text. 두 유형은 이진 호환 가능하므로 캐스팅은 사소한 구문 분석 시간 작업입니다. 그러나 사용 text은 여전히 ​​시스템에 전반적으로 더 자연 스럽습니다.

그러나 이러한 장점 외에도 눈에 띄는 차이는 없습니다. 더 예쁘게 보이는 것을 사용하십시오. ;-)


오 좋은 설명입니다. 특정 제품의 이점을 사용하여 차단하는 호환성에 신경 쓰지 않기 때문에 '텍스트'를 사용합니다. 감사!
Eonil

1

이 비슷한 질문을 참조하십시오 . jist는 차이가 없지만 더 많은 공간을 사용하지만 성능을 향상시키지 않기 때문에 varchar(n)일반적으로 선호 하지 않는 최대 길이를 지정하는 것입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.