web-dev-qa-db-ja.com

PostgreSQLの「varchar」タイプと「text」タイプの違いは何ですか?

それらの違いについて私が知っているのは、varcharに制限があることとtextには制限がないことです。 documentation はこれについて言及していません。

それが本当に唯一の違いですか?性能等は気にしませんか?

17
Eonil

これの背景は次のとおりです。古いPostgresシステムはPostQUEL言語を使用し、textという名前のデータ型を使用していました(テキストを格納する型には適切な名前だと誰かが考えたため)。その後、PostgresはSQLを言語として使用するように変換されました。 SQL互換性を実現するために、textタイプの名前を変更する代わりに、新しいタイプvarcharが追加されました。しかし、どちらの型も同じCルーチンを内部で使用しています。

現在、ある程度、場所によっては、textがデフォルトの型としてハードコードされています。また、ほとんどの関数は、text引数を取るか、textを返す場合にのみ使用できます。 2つのタイプはバイナリ互換なので、キャストは簡単な解析時間操作です。ただし、textを使用する方が、システム全体としてはより自然です。

しかし、これらの細かい点を除けば、目立った違いはありません。見た目がきれいな方を使用してください。 ;-)

24

この同様の質問 を参照してください。 jistは違いがないということですが、varchar(n)などの最大長を指定することは一般的にnotより多くのスペースを使用しますが、パフォーマンスは向上しません。

1
cassava

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つのタイプの間にパフォーマンスの違いはありません。

0
ooshro