-- 下面是我经常的建表语句:
create table fubi_user_product.F_PRODUCT_VIDEO_USER_NUM 
(  DATE_TIME     DATE GENERATED ALWAYS AS (TO_DATE(TO_CHAR("DATE_ID"),'YYYYMMDD')) VIRTUAL VISIBLE,
   DATE_ID              NUMBER(8,0)            not null,
   PC_ACTIVE_USER_NUM   NUMBER(20,0),
   WEB_ACTIVE_USER_NUM  NUMBER(20,0),
   WEB_UNIQUE_ACTIVE_USER_NUM NUMBER(20,0),
   MOBILE_ACTIVE_USER_NUM NUMBER(20,0)
)
PARTITION BY RANGE (date_time) INTERVAL(NUMTOYMINTERVAL(2,'year'))
STORE IN (part01,part02,part03,part04,part05,part06,part07,part08) 
(PARTITION P20130101_LS VALUES LESS THAN (TO_DATE('20130101','YYYYMMDD')) TABLESPACE part08)
COMPRESS
parallel 4;CREATE UNIQUE INDEX UK_PRODUCT_VIDEO_USER_NUM ON F_PRODUCT_VIDEO_USER_NUM(
DATE_TIME)
INITRANS 4
LOCAL
parallel 4;ALTER TABLE F_PRODUCT_VIDEO_USER_NUM ADD CONSTRAINTS PK_PRODUCT_VIDEO_USER_NUM PRIMARY KEY(
DATE_TIME);

解决方案 »

  1.   

    学习了,并同上所问,1、能说说并行查询是加hint还是程序实现的?还想提几个问题:
    2、间隔分区+局部索引,主要是针对时间类,如话单、交易类的。但是,有的是人口系统,pk必须是全局的。此时,这个索引的代价会比较大。这种情况如何处理呢?
    3、感觉像oltp的解决方案,但是您提到了“数据仓库”的字样。您说的oltp还是olap呢?
      

  2.   

    遇到高手,就忍不住请教一下。
    环境:Oracle 11g,表有15个字段,两个索引,一个date类型,一个是Number类型,按月分区,只保留6个月的数据,通过job定时检查分区(创建新分区,删除旧分区),只插入不更新,会查询,每天的插入量约35W。
    问题:
    1、数据插入一段时间后,索引会失效,原来是全局索引,后来换成局部索引,情况依然;
    2、使用odp.net中提供的OracleBulkCopy批量插入,索引有效时插入效率极低,插入2k条记录最长耗时430s,最短耗时5s,取消索引后,插入时间降到0.5s一下;
    想要咨询一个解决方案,提高插入和查询效率。