それらの違いについて私が知っているのは、varchar
に制限があることとtext
には制限がないことです。 documentation はこれについて言及していません。
それが本当に唯一の違いですか?性能等は気にしませんか?
これの背景は次のとおりです。古いPostgresシステムはPostQUEL言語を使用し、text
という名前のデータ型を使用していました(テキストを格納する型には適切な名前だと誰かが考えたため)。その後、PostgresはSQLを言語として使用するように変換されました。 SQL互換性を実現するために、text
タイプの名前を変更する代わりに、新しいタイプvarchar
が追加されました。しかし、どちらの型も同じCルーチンを内部で使用しています。
現在、ある程度、場所によっては、text
がデフォルトの型としてハードコードされています。また、ほとんどの関数は、text
引数を取るか、text
を返す場合にのみ使用できます。 2つのタイプはバイナリ互換なので、キャストは簡単な解析時間操作です。ただし、text
を使用する方が、システム全体としてはより自然です。
しかし、これらの細かい点を除けば、目立った違いはありません。見た目がきれいな方を使用してください。 ;-)
この同様の質問 を参照してください。 jistは違いがないということですが、varchar(n)
などの最大長を指定することは一般的にnotより多くのスペースを使用しますが、パフォーマンスは向上しません。
http://www.postgresql.org/docs/8.4/interactive/datatype-character.html
character varying(n), varchar(n) variable-length with limit
text variable unlimited length
長さが宣言されていないテキスト。これら2つのタイプの間にパフォーマンスの違いはありません。