现有一张表(A表)没有日期字段-该表有6000万左右的数据,
另外有一张表(B表)与该表有索引关联也有6000万左右, 现需要对A表进行清理1个月以前的数据,但是发现从B表里取出一个月前的数据(200万左右),然后再到A表关联索引,做备份相关数据再删除,发现效率不高,为了提高效率,请问如何删除A表里面一个月以前的数据 如A表 --6000万以上
table A
(id char(20),
name char(40),
age integer
);
B表 --6000万以上
table B
( date date,
id char(20),
amount double(16,2),
rmrk char(50)
); 假定现在只有A表, 如何定期对A表进行删除清理,能够清理最早的数据库数据。
另外有一张表(B表)与该表有索引关联也有6000万左右, 现需要对A表进行清理1个月以前的数据,但是发现从B表里取出一个月前的数据(200万左右),然后再到A表关联索引,做备份相关数据再删除,发现效率不高,为了提高效率,请问如何删除A表里面一个月以前的数据 如A表 --6000万以上
table A
(id char(20),
name char(40),
age integer
);
B表 --6000万以上
table B
( date date,
id char(20),
amount double(16,2),
rmrk char(50)
); 假定现在只有A表, 如何定期对A表进行删除清理,能够清理最早的数据库数据。
发现从B表里取出一个月前的数据(200万左右),然后再到A表关联索引,做备份相关数据再删除A表与B表是一对多的关系还是多对一的关系呢??
2. 新建表tmp,启用parallel,nologging,在建表时把不需要的数据过滤掉,然后rename tmp to A,重建索引,主键等。
对于A表而言,没有日期这个字段,因此没有想好如何建立分区。 如果以Range方式对表建立分区,应该是有个条件的。 但是该表没有什么可以明确表现出的可分区的字段。
2个ID是同步的?
采用顺序读A表,降低物理读!
如果使用rowid, 因为该表可能会做更新或者是做rebuild index,这样就可能导致rowid 重置删除近期的数据