请教各位高人:
有一个客户表,对机构号INSTN_NO用range方式进行分区,主键为客户号CUST_ID。从客户表进行查询时,已经知道客户号CUST_ID和客户的初始机构号。现在用CUST_ID直接进行关联查询的效率有点低,想把机构号INSTN_NO也作为条件加到WHERE语句中去,但是客户的机构号可能会发生变更(但不会超出分区范围),所以条件中可以使用的初始机构号在查询时直接关联可能是关联不上的,只能用于判断该客户记录位于哪个分区。现在就是这样的情况,请教各位高人有什么提高效率的办法没有?

解决方案 »

  1.   

    谢谢各位!就是下面一张表,表的字段其实非常多,有八十多个,怕大家看不清,我都删掉了。现在的情况是我直接用CUST_ID作为条件的话,不论查询还是更新都比较慢,尤其是更新,完全不能满足要求,但是机构号可能会改变(但不会超过分区范围,比如杭州的客户的机构只能在杭州范围内变更),因此不能直接作为查询条件。create table F_CUST_INFO
    (
      CUST_ID           CHAR(30),
      INSTN_NO       CHAR(9),
      OPAC_AMT            NUMBER(20,2),
      OPAC_DT             DATE,
      OPAC_PERM_NO        CHAR(15),
      SRC_SYS_NO         CHAR(10),
      LOAD_DT            CHAR(23)
    )
    partition by range (INSTN_NO)
    (
      partition HANGZHOU values less than ('629999'),
      partition JIANXING values less than ('639999'),
      partition HUZHOU values less than ('649999'),
      partition SHAOXING values less than ('659999'),
      partition TAIZHOU values less than ('669999'),
      partition JINHUA values less than ('679999'),
      partition HENZHOU values less than ('689999'),
      partition LISHIU values less than ('699999'),
      partition ZHOUSHANG values less than ('709999'),
      partition QITA values less than (MAXVALUE)
    );alter table F_CUST_INFO
      add primary key (CUST_ID)
      using index ;
      

  2.   

    能不能具体点啊,Oracle我实在很菜。
      

  3.   

    select * from tablenamewhere CUST_I=&num
    partition(p1);
      

  4.   

    如果选择性高的话
    建local index啊
      

  5.   

    按照 5,11 楼处理.
    Create index ind_1 on table(col1,col2...) local;
      

  6.   

    CUST_ID CHAR(30),上面的字段改为数字类型再看看