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


15

それらの違いについて私が知っているのvarcharは限界があるだけで、そうでtextはありません。ドキュメントには、このことについて言及していません。

それが本当に唯一の違いですか?パフォーマンスなどについて考慮しませんか?


1
これは実際にデータベース管理者に移行する必要があります。サーバー管理に関しては何もありません。
エヴァンキャロル

回答:


22

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

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

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


いい説明だ。特定の製品の利点を使用することを妨げる互換性を気にしないため、「テキスト」を使用します。ありがとう!
エオニル

1

この同様の質問を参照してください。JISTは差がないということですが、のような最大の長さを指定することはvarchar(n)一般的ではない、それはより多くのスペースを使用しますが、パフォーマンスが改善されないよう、あなたの好意で。


0

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


5
()部分なしでvarcharを使用することもできます。これにより、長さも無制限になり、テキストとほぼ同等になります。
マグナスハガンダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.