Postgre Sql Strings

Updated: 2003-09-28 00:13:57 - [ Home | Wiki Home | Index | Changes ]

PostgreSQLの文字列型とテーブルのサイズの関係について。

目次

varcharとtextでは、使用するサイズが異なるのか

varcharとtextでは、使用するサイズが異なるのか

カラムの型をvarchar(128)、varchar(1024)、textのそれぞれでテーブルを作成し、データベースが格納されているディレクトリのサイズをduで比較してみました。

結果、3種類のSQL文のどれでテーブルを作成した場合も、データベースのサイズは同じ(38039552 byte)になりました。マニュアルには、「空白でパッドされた型を使用した場合の保存領域の増加を別にして、これら 3 つの型の間でパフォーマンスに関する差異はありません」とあるので、textは文字数制限無しのvarcharであると考えていいのかもしれません。

実験は以下の手順で行いました。

  1. createdb
  2. テーブルを作成
  3. 約40万行のデータを\copyコマンドで読み込み
  4. vacuumを1回実行
  5. ディレクトリのサイズをdu -bで確認
  6. dropdb

テーブルの作成は以下の3種類で行いました。

create table test ( k text, v text);

create table test ( k varchar(128), v text);

create table test ( k varchar(1024), v text);

char(128)やchar(1024)で作成すると、当然サイズはずっと大きくなります。


KOSEKI Kengo <kengo@tt.rim.or.jp>