2017-07-25 101 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

感谢您的建议:) –

相关问题