我想从一个分区的表中删除大约100万条记录,表大小约为10-13百万,截至目前,表中只有2个分区包含7月份数据和8月份数据,我想要从7月份开始删除。如果从表格(0715)中删除一个简单的删除可以,请告诉我吗?碎片化的可能性?还是最好的出路?
谢谢
答案 0 :(得分:3)
DELETE 对大型分区表的操作相当昂贵(但10M并不大)。通常,您尝试使用drop partition来避免它并以分区方式删除数据。
最简单的架构是滚动窗口,您可以通过在保留间隔后删除最旧的partitian来定义范围分区架构。
如果您需要更多控制权,可以使用 CTAS并交换方法。 而不是删除分区的大部分,而是创建它的副本
create table TMP as
select * from TAB PARTITION (ppp)
where <predicate to filter out records to be ommited for partition ppp>
在TMP表上创建与分区表的LOCAL索引相同结构的索引。 比用分区交换临时表
ALTER TABLE TAB
EXCHANGE PARTITION ppp WITH TABLE TMP including indexes
WITHOUT VALIDATION
注意 no fragmenatation ,相反,您可以使用它来重新组织分区数据(例如,在CTAS中使用ORDER BY或使用COMPRESS等)
答案 1 :(得分:0)
您可以删除截断给定表中的分区。如果要从分区中删除少量行,也可以执行删除操作。 Plz与分区详细信息共享您的表结构,以便这里的人们可以轻松地为您提供帮助。