我有一个存储过程,在该过程中,我将来自另一个表的数据保存在历史表中。然而,我不希望我的历史表变得太大,我想删除超过1周的条目。实现这一目标的最佳方法是什么?
INSERT INTO table_h
SELECT
*
FROM
table;
COMMIT;
一种方法是将delete
与where
子句一起使用:
delete from t
where datecol < trunc(sysdate) - interval '7' day;
不过,最好的方法可能是按周(或天(对表进行分区。然后在分区变老时将其删除。删除分区通常比删除单个记录快得多。