답변:
이것의 배경은 다음과 같습니다. 구 Postgres 시스템은 PostQUEL 언어를 사용하고 이름이 지정된 데이터 유형을 사용했습니다 text
(다른 사람이 텍스트를 저장하는 유형의 이름이라고 생각했기 때문에). 그런 다음 Postgres는 SQL을 언어로 사용하도록 변환되었습니다. text
유형 을 바꾸는 대신 SQL 호환성을 달성하기 위해 새로운 유형 varchar
이 추가되었습니다. 그러나 두 유형 모두 내부적으로 동일한 C 루틴을 사용합니다.
이제 어느 곳에서나 다른 곳에서는 text
파생 할 수없는 경우를 위해 기본 유형으로 하드 코딩됩니다. 또한 대부분의 함수는 text
인수를 받거나을 반환 하는 경우에만 사용할 수 있습니다 text
. 두 유형은 이진 호환 가능하므로 캐스팅은 사소한 구문 분석 시간 작업입니다. 그러나 사용 text
은 여전히 시스템에 전반적으로 더 자연 스럽습니다.
그러나 이러한 장점 외에도 눈에 띄는 차이는 없습니다. 더 예쁘게 보이는 것을 사용하십시오. ;-)
http://www.postgresql.org/docs/8.4/interactive/datatype-character.html
character varying(n), varchar(n) variable-length with limit
text variable unlimited length
선언 된 길이가없는 텍스트 이 두 유형간에 성능 차이는 없습니다.