回答:
この背景は次のとおりです。古いPostgresシステムはPostQUEL言語を使用し、名前が付けられたデータ型を使用しましたtext
(テキストを格納する型に適した名前だと誰かが考えたため)。その後、Postgresはその言語としてSQLを使用するように変換されました。text
型の名前を変更する代わりに、SQLの互換性を実現するために、新しい型varchar
が追加されました。ただし、どちらのタイプも同じCルーチンを内部的に使用します。
現在、ある程度、場所によってtext
は、他に何も導出できない場合に備えて、デフォルトのタイプとしてハードコードされています。また、ほとんどの関数はtext
引数を取るか返すとしてのみ利用可能ですtext
。この2つのタイプはバイナリ互換であるため、キャストは簡単な解析時間操作です。ただし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
長さが宣言されていないテキスト。これら2つのタイプの間にパフォーマンスの違いはありません。