通常、ありません テキスト
を使用することの欠点 パフォーマンス/メモリの観点から。それどころか: text
最適です。他のタイプには、多かれ少なかれ関連する欠点があります。 テキストコード> は、Postgres型システムの文字列型の中で文字通り「優先」型であり、関数または演算子型の解決に影響を与える可能性があります。
特に、決して ( char(n)
を使用します )、あなたが何をしているのかを知らない限り。 character(n)
のエイリアス char
または文字
character(1)
の略です 、だからすべて同じ。内部名はbpchar
です。 (「空白で埋められた文字」の前に立っています)。このタイプは、古いコードおよび標準との互換性のためにのみ存在します。最近ではほとんど意味がなく、メモリを浪費し、問題を引き起こす可能性があります:
- varcharとcharを比較する
- PostgresSQLの文字列フィールドの長さ
varchar(n)
を使用できます 長さ修飾子付き( charactervariing(n)
のエイリアス )。しかし、 通常、他のRDBMSから持ち越された誤解を示しており、パフォーマンスにとって局所的に最適である可能性があります。 Postgresでは、長さ修飾子 varchar(255)
(255)
特別な意味はなく、ほとんど意味がありません。
- VARCHAR列に任意の長さ制限を追加する必要がありますか?
varchar(n)
の長さ修飾子を変更しようとすると、古いバージョンでさまざまな問題が発生しました。 後で。それらのほとんどは現代のPostgresで軽減されていますが、 text
またはvarchar
(文字の変化
のエイリアス )長さ指定子なし(および CHECK
代わりに制約)これらの問題は発生しませんでした。
CHECK
制約は同じように高速で、列タイプに依存するビュー、関数、FK制約などに依存する問題を引き起こす可能性が低くなります。また、最大文字長を強制するだけでなく、ブール式に入れることができるすべてのことを実行できます。参照:
- ビューで使用されるPostgreSQL列を変更する
最後に、 "char"
もあります (二重引用符付き):安価な内部列挙型として使用される単一のASCII文字の1バイトのデータ型。
text
以外はほとんど使用しません Postgresの文字データ用。