数据库:Oracle 11g
我正在开发一个新项目并设计一个数据库模式。我有一个审计表,顾名思义,它最终会增长到容纳大量记录。以下是表定义(在修剪无关列之后)。
create table ClientAudit (
id number(19,0) primary key,
clientId number(19,0) not null,
createdOn timestamp with time zone default systimestamp not null
);
id 是由 oracle 序列填充的自然数。
clientId 是唯一的客户端标识符。
为了便于报告查询,我还创建了一个以下视图,它基于 createdOn 为每个客户提供最新记录:
create or replace view ClientAuditView
as
select * from (
select ca.*,max(ca.createdOn) keep (dense_rank last order by ca.createdOn)
over (partition by ca.clientId) maxCreatedOn
from ClientAudit ca
)
where createdOn=maxCreatedOn;
/
如果我要对 ClientAudit 表进行分区,我不确定这里的分区键应该是什么。
它应该是 ClientId 还是 CreatedOn?
分区策略应该是什么?