2009-07-01 14 views

答えて

22

これらは同じです。

http://www.postgresql.org/docs/8.3/static/datatype-character.html

ヒント:PostgreSQLのドキュメントから

これらの3つの型の間で性能 違いはありません、別に保存領域の増加 空白でパッドタイプを使用して、そしてから 長さに制約の の列に格納するとき 数 の余分なサイクルが長さをチェックします。文字(N)がいくつかの他の データベースシステムにおける 性能上の利点を有するが、それは、PostgreSQLには、このような 利点を有していません。たいてい の場合、代わりに のテキストまたは文字を使用する必要があります。

ここでは、char(n)、varchar(n)とtext(= varchar(1G))の違いについて説明します。正式な話は、varchar(100)とテキスト(非常に大きなvarchar)には違いがないということです。

+0

私はないあなたが指しているものであるCHAR対VARCHAR、およそVARCHAR VARCHAR(n)に対(M)、について話しています。 – ibz

+1

再度確認してください。彼らは3つが同一であることを指します。私。 varchar(n)のパフォーマンスはtext(varchar(LOTS))と同じです。 3つのタイプの唯一の違いは、パディングと長さの制約です。 varchar(100)とvarchar(500)の間には適用されないので、彼らは同じであると言っています。 –

+1

はい、彼らは3つすべてを言及しますが、2つだけを主張します。私は実際にこの質問を書いていました。なぜなら私はその文書のその特定のパラグラフに満足していなかったからです。私はもっと洞察に満ちた説明を求めていました。 また、TEXTはVARCHAR(LOTS)と同じではありません。 TEXTは行の外側に格納されます。少なくともAFAIK。 – ibz

6

テキスト/テキスト

、明示的な長さ無しVARCHARと同じで/である「短い 文字列(最大126バイト)のためのストレージ要件は1バイト プラス実際の文字列であります 文字の場合はスペースのパディングが含まれています。ディスク上の物理 要件が少なくなる可能性があるので、長い文字列は、1ではなく長い文字列 自動的にシステム によって圧縮されている4バイトの オーバーヘッドを持っている。 とても長い値でありますまたsto 背景テーブルの赤い彼らは は短い 列の値への高速アクセスに干渉しないように。いずれの場合においても、 を格納することができること 可能な限り長い文字列は、約1 GBです。」

あなたが制限される。VARCHARとTEXT(VARCHAR(n)は、テキストのちょうど限定版であるため)の両方を指しVARCHARSは、おそらくワイルドカードや正規表現との比較を除いて、人為的に実際のストレージやパフォーマンス上の利点はありません(オーバーヘッドは文字列の実際の長さに基づいており、基になるvarcharの長さには基づいていません)おそらくPostgreSQLの全文索引サポートのようなものを探しているはずです)

関連する問題