[求助]寻求创建分区表的方案,具体需求请进
具体表结构如下:
[Copy to clipboard] [ - ]
CODE:
create table DRAW
(
ID NUMBER(8) not null,
VALTYPE NUMBER(2) not null,
TM NUMBER(4) not null,
DATATIME DATE not null,
RAWDATA NUMBER(15,5),
RAWTYPE NUMBER(2),
REPDATA NUMBER(15,5),
REPTYPE NUMBER(2),
TMENG NUMBER(15,5),
ENGTYPE NUMBER(2),
VALID NUMBER(1),
BAK VARCHAR2(64)
)
ID、VALTYPE 、DATATIME 为主键列。
每个ID、和VALTYPE在一天之内有1440条数据,就是每1分钟有1条数据;
ID大概在1000个左右,根据业务量的增大可能还会增加;
VALTYPE目前有4个值,从1到4。
所以说一天的数据都要在200万以上。
随着运行时间的变长,可能1年下来数据量就要到10,20亿左右。
客户端经常执行的SQL语句如下:
[Copy to clipboard] [ - ]
CODE:
select id,valtype,to_char(datatime,'yyyy-mm-dd'),sum(tmeng)
from draw
where id in (10001,10002,10003,10004,10005,10006,10007,10008,10009)
and DATATIME >= to_date('20060101','yyyymmdd') and DATATIME <to_date('20060201','yyyymmdd')
group by d,valtype,to_char(datatime,'yyyy-mm-dd')
如果采用普通表的话速度就很慢,要提高性能的话就想采用分区表技术,想以DATATIME来分区,一天一个分区表。
这样在建立分区表时有什么注意事项?表空间怎么建?索引怎么建?建全局索引还是local索引?索引的表空间怎么弄?
谢谢大家。
具体表结构如下:
[Copy to clipboard] [ - ]
CODE:
create table DRAW
(
ID NUMBER(8) not null,
VALTYPE NUMBER(2) not null,
TM NUMBER(4) not null,
DATATIME DATE not null,
RAWDATA NUMBER(15,5),
RAWTYPE NUMBER(2),
REPDATA NUMBER(15,5),
REPTYPE NUMBER(2),
TMENG NUMBER(15,5),
ENGTYPE NUMBER(2),
VALID NUMBER(1),
BAK VARCHAR2(64)
)
ID、VALTYPE 、DATATIME 为主键列。
每个ID、和VALTYPE在一天之内有1440条数据,就是每1分钟有1条数据;
ID大概在1000个左右,根据业务量的增大可能还会增加;
VALTYPE目前有4个值,从1到4。
所以说一天的数据都要在200万以上。
随着运行时间的变长,可能1年下来数据量就要到10,20亿左右。
客户端经常执行的SQL语句如下:
[Copy to clipboard] [ - ]
CODE:
select id,valtype,to_char(datatime,'yyyy-mm-dd'),sum(tmeng)
from draw
where id in (10001,10002,10003,10004,10005,10006,10007,10008,10009)
and DATATIME >= to_date('20060101','yyyymmdd') and DATATIME <to_date('20060201','yyyymmdd')
group by d,valtype,to_char(datatime,'yyyy-mm-dd')
如果采用普通表的话速度就很慢,要提高性能的话就想采用分区表技术,想以DATATIME来分区,一天一个分区表。
这样在建立分区表时有什么注意事项?表空间怎么建?索引怎么建?建全局索引还是local索引?索引的表空间怎么弄?
谢谢大家。