我需要根据条件截断Greenplum中的分区。最简单的方法是什么?
示例:
ALTER TABLE PACKAGE_INFO TRUNCATE PARTITION FOR ('BOX');
我需要在表PACKAGE_INFO中截断分区值为BOX,仅用于特定条件。只说几个PACKAGE_ID。
有些事情,截断包含PACKAGE_ID的数据为PACKAGE_ID - 100,200,300。我不倾向于删除,因为如果我使用删除,我就无法压缩表格。
感谢。
答案 0 :(得分:0)
在GPDB 4.3.x中,您可以从AO和压缩表中删除。您应该升级为4.2.x将在2个月内进行EOL并且您将不再拥有支持
数据库中的Truncate命令用于删除整个表/分区而不进行验证和数据扫描,这就是它快速的原因。在GPDB中,它只是使用不同的relfilenode改变pg_class,并从底层文件系统中删除表文件。没有选项可以部分截断表数据
如果你仍然在4.2.x,你必须做一些更聪明的事情。一种选择是在没有此数据的情况下重新创建分区。第二种选择是有一个单独的可见性地图"包含已删除PACKAGE_ID列表的表,每次查询表时,您必须加入此表以删除"已删除的"记录