如何创建一个动态分区(Oracle)的范围,这将是每天更新?



我正在使用Oracle。我有一个表,其中有列"updated_date":时间戳。这个表每天有数百万条新记录插入。我们的工作只关注于填充(更新,选择,…)从当前日期起90天内的新记录(updated_date>Current_date—90天)。我正在考虑使用表"分区"提高性能。但问题是分区不是动态的。我想有一个分区只包含新记录(在90天内)对当前日期时间和this partition is auto-updated everyday消除未使用的记录(记录可能是新的昨天,但他们是旧的今天)。你有什么解决办法吗?

Oracle提供INTERVAL分区用于此目的。就像这样:

CREATE TABLE your_table
(
updated_date  TIMESTAMP(3) DEFAULT LOCALTIMESTAMP NOT NULL,
... other columns
)
PARTITION BY RANGE (updated_date) INTERVAL (INTERVAL '1' DAY)
(  
(PARTITION P_INITIAL VALUES LESS THAN (TIMESTAMP '2023-04-01 00:00:00') 
);

要删除过时的分区,请查看如何基于日期删除多个间隔分区?

最新更新