一个表table_a有个字段 usid,我想创建一个分区表,分为十个区,按照usid除以10的余数来分类

解决方案 »

  1.   

    -- 在你想要这样做之前,首先问自己:为什么要这样做?
    -- 为什么要这样做?你的查询会经常用到 mod(usid,10)条件吗?
      

  2.   


    这样我可以比较均匀的分布的同时,知道具体的那个usid在那个分区里
      

  3.   


    -- 思路:只能是额外添加一个名为 mod_uuid 字段,此字段的值在插入时就添加为 mod(uuid,10)的值!
    -- 然后根据 mod_uuid 字段去创建 list 分区!-- 创建分区的类似代码如下:
    create table table_a(
      usid number(18,0),
      mod_usid number(2)
     )
    partition by list(mod_usid)
    ( partition part_0 values(0),
      partition part_1 values(1),
      partition part_2 values(2),
      partition part_3 values(3),
      partition part_4 values(4),
      partition part_5 values(5),
      partition part_6 values(6),
      partition part_7 values(7),
      partition part_8 values(8),
      partition part_9 values(9)
    );
      

  4.   

    -- 思路:只能是额外添加一个名为 ……
    [/Quote]
    谢谢,新增了一个思路
    不过似乎还有点问题,已有新增分区,比如从10变成30的时候,需要修改表内数据;还有也需要多增加一个分区索引。不知道还有不由更好的办法