您需要对不同的方法进行基准测试。在没有更多了解您的情况的情况下,我们无法为您提供有意义的解决方案。总共有多少个不同的代码?每次读取的平均代码数是多少?代码分配会有明显的偏差吗?您需要通过code
搜索哪些访问路径?
然后就是你如何加载数据(批次?滴灌饲料?)的问题。你从使用分区中得到什么好处。
无论如何。这里还有一个方法,就是你的(1)和(2)的合并。
鉴于您的主表是按月分区的,您应该用相同的方案对任何子表进行分区。您也可以通过code
进行子分区。
create table main_codes
(reading_dt date not null
, main_id number not null
, code varchar2(2)
, constraint main_codes_pk primary key (code, reading_dt, main_id) using index local
)
partition by range (reading_dt)
subpartition by list (code)
subpartition template
(
subpartition sp_aa values ('AA'),
subpartition sp_bb values ('BB'),
subpartition sp_cc values ('CC'),
subpartition sp_dd values ('DD')
)
(
partition p_2015JAN values less than (date '2015-02-01'),
partition p_2015FEB values less than (date '2015-03-01'),
partition p_2015MAR values less than (date '2015-04-01')
)
/
您可能需要在主表的外太:
alter table main_codes
add constraint code_main_fk foreign key (reading_dt, main_id)
references main_table (reading_dt, main_id)
/
create index code_main_idx on main_codes (entry_dt, id) local
/
根据你的代码的数量,创建子分区模板可能是乏味的。这就是为什么大自然给了我们'切'的酱。
但无论你做什么,都不会沿着XML路径。
来源
2015-05-31 07:03:16
APC
创建一个包含主记录ID和代码值的单独表格。代码上的索引对于查询来说性能足够好,而且不会减慢插入的速度。我假设在这张独立的桌子上不会有更新或删除。 –
你的意思是说,在将来你想查询一个表来找到所有具有代码A或者不同的ID?一天最多可记录2000万条记录,数据量将变得非常快。 – Ben