2017-07-25 100 views
1

我在表格中添加了一列,之後我也將其刪除。我發現刪除列將會隱藏,但不會刪除它。我該如何防止丟失的列導致列限制?

因爲我反覆添加和刪除列,我很快就得到這個錯誤:

ERROR: tables can have at most 1600 columns

我知道,一個解決方法是刪除該表並重新創建它,但它會間接招致,所以它不適合我的情況。

我還能怎樣避免這個錯誤?

+1

刪除列不會被實際刪除。你應該做的真空,然後在桌子上ANALYZE永久刪除它 –

+0

是的,我已經做了謝謝。但仍然是昂貴的經營權嗎? –

+0

是的,這是一個昂貴的操作,這就是爲什麼它最好每天做一次。如果DML操作發生在桌面上,那麼最好每天至少做一次VACUUM和ANALYZE。這對於查詢計劃構建更好的計劃會很有用 –

回答

0

刪除列不會被刪除。您應該在桌上進行VACUUM和ANALYZE以將其永久移除。

這是一個昂貴的操作,這就是爲什麼它最好每天做一次。如果DML操作發生在桌面上,那麼最好每天至少做一次VACUUM和ANALYZE。這對於查詢計劃建立更好的計劃很有用

+0

*'VACUUM FULL',不是常規的'VACUUM'。另外,'ANALYZE'可以包含在這個命令中:'VACUUM FULL ANALYZE;'。並且可以看到更多細節:'VACUUM FULL VERBOSE ANALYZE;'。 – Nick

+0

此外,關於每天執行一次'VACUUM'的說法並不真正相關 - 有一個特殊的進程'autovacuum',它會自動爲您(包括'VACUUM'和'ANALYZE')。與'VACUUM FULL'不同的是,常規'VACUUM'不是那麼繁重的操作,不像'VACUUM FULL',它真正地重組了表格。 – Nick

+0

感謝您的建議:) –

相關問題