パフォーマンスの観点からVARCHAR(100)
より良いものはありますか?VARCHAR(500)
ディスク使用量はどうですか?
今日のPostgreSQLについて話すのは、歴史上のあるデータベースではありません。
パフォーマンスの観点からVARCHAR(100)
より良いものはありますか?VARCHAR(500)
ディスク使用量はどうですか?
今日のPostgreSQLについて話すのは、歴史上のあるデータベースではありません。
それらは同一です。
PostgreSQLのドキュメントから:
http://www.postgresql.org/docs/8.3/static/datatype-character.html
ヒント:ブランクパッドタイプを使用する場合のストレージサイズの増加と、長さに制約のあるカラムに保存する場合の長さをチェックするための数サイクルの追加を除いて、これら3つのタイプの間にパフォーマンスの違いはありません。character(n)は、他のいくつかのデータベースシステムではパフォーマンス上の利点がありますが、PostgreSQLではそのような利点はありません。ほとんどの場合、代わりにテキストまたは文字の変化を使用する必要があります。
ここでは、char(n)、varchar(n)、およびtext(= varchar(1G))の違いについて話しています。公式の話では、varchar(100)とテキスト(非常に大きなvarchar)の間に違いはありません。
varchar(m)
との間に違いはありませんvarchar(n)
。
http://archives.postgresql.org/pgsql-admin/2008-07/msg00073.php
との間には違いがvarchar(n)
ありますがtext
、varchar(n)
チェックする必要のある組み込みの制約があり、実際には少し遅くなります。
http://archives.postgresql.org/pgsql-general/2009-04/msg00945.php
TEXT / is /明示的な長さのないVARCHARと同じ、テキスト
「短い文字列(最大126バイト)のストレージ要件は、1バイトに実際の文字列を加えたもので、文字の場合はスペースパディングが含まれます。長い文字列のオーバーヘッドは1ではなく4バイトです。長い文字列はシステムによって圧縮されます。自動的に実行されるため、ディスク上の物理要件が少なくなる可能性があります。非常に長い値もバックグラウンドテーブルに格納されるため、短い列値への迅速なアクセスが妨げられません。いずれの場合も、格納できる最長の文字列は約1GB。」
VARCHARとTEXTの両方を指します(VARCHAR(n)はTEXTの限定バージョンであるため)。VARCHARSを人為的に制限しても、実際のストレージやパフォーマンス上の利点はありません(オーバーヘッドは、基になるvarcharの長さではなく、文字列の実際の長さに基づいています)。ただし、ワイルドカードや正規表現との比較を除きます(ただし、問題は、おそらくPostgreSQLのフルテキストインデックスサポートのようなものを見ているはずです)。