2017-09-28 7 views
0

ここに質問があります。 は私がpostgresqlのテーブルサイズと配列テキスト[]

のように作成し、いくつかのテーブルが

(コメントのテキストは、[] 、 byteaのID2、 はbytea ID1)をテーブルの数学を作成する必要があり多くの列がありますが、それは軽微です。それらのそれぞれが

array_append(コメントは、「現在のコンピューティング・ステップに関するいくつかのコメント」)

が含まれており、すべては私が手に行われた後に作成した後、私はそこに〜500Kの行を挿入し、いくつかのクエリによってそれらを変更しますtablesize約1.6GBの

その後、私が実行している場合は

ALTER TABLEの数学は、ALTER COLUMNコメントvarchar型[]のコメントを使用した:: VARCHAR [];

tablesizeは、大幅に低下するまで約〜300MBのの

ですが、なぜでしょうか?列の種類を変更せずに同様の結果を得るにはどうすればよいですか?

注:作成時にcolumnをvarchar [] typeに設定しようとしましたが、すべてのクエリを実行しても1.6Gbのサイズになり、テキスト[]に変換すると再び300Mbになります。

答えて

0

ALTER TABLE .. ALTER TYPE ..は、テーブルとインデックスを圧縮する完全なテーブルの書き換えを行います。

代わりにVACUUM FULL tablename;と同じ結果が得られます。

textおよびvarcharは完全に同一の記憶域を有する。

関連する問題