[英]Tablesize and array text[] in postgresql
好,這是問題。 我有一些我創建的表格
創建表數學(id1 bytea,id2 bytea,注釋文本[])
有更多的列,但這無關緊要。 創建后,我在其中插入〜500k行,並通過幾個查詢對其進行修改,每個查詢包含
array_append(評論,'關於當前計算步驟的一些評論')
畢竟,我得到的表大小約為1.6Gb
如果可以的話
ALTER TABLE數學ALTER COLUMN注釋類型varchar []使用comment :: varchar [];
該表的大小顯着下降,約為300Mb
為什么會這樣呢? 在不更改列類型的情況下如何獲得相似的結果?
注意:我嘗試在創建時將列設置為varchar []類型,但是在執行所有查詢后,它的大小仍然變為1.6Gb,並且轉換為text []會將其再次減小為300Mb。
ALTER TABLE .. ALTER TYPE ..
進行全表重寫,從而壓縮表和索引。
從VACUUM FULL tablename;
可以得到相同的結果VACUUM FULL tablename;
代替。
text
和varchar
具有完全相同的存儲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.