|
发表于 2008-10-30 17:18:49
|
显示全部楼层
楼主,经测试发现:
任务消息表数据量太大,FState、FROrgUrl字段的重复值太多,导致查询时,该字段索引无效,严重影响了查询效率。
对TTaskMessage表按照FState分成7个区后,速度大幅提高,执行22楼的sql语句只需要0.125秒。
下面是分区的语句,请参考(建议先创建表,再拷贝数据,最后创建索引):
create table TT
(
FGUID VARCHAR2(32) not null,
FCLIENTACCOUNT VARCHAR2(64) not null,
FPARENTGUID VARCHAR2(32),
FTASKGUID VARCHAR2(32),
FRDEPT VARCHAR2(64),
FRPOSITION VARCHAR2(64),
FRPERSON VARCHAR2(64),
FRORGURL VARCHAR2(255) not null,
FRECEIVETIME DATE,
FFINISHTIME DATE,
FSTATE VARCHAR2(16) not null,
FFLAG VARCHAR2(32),
FRDEPTNAME VARCHAR2(200),
FRPOSITIONNAME VARCHAR2(32),
FRPERSONNAME VARCHAR2(32),
FNOTE BLOB,
FROGN VARCHAR2(32),
FROGNNAME VARCHAR2(32),
ESFIELD01 VARCHAR2(255),
ESFIELD02 VARCHAR2(255),
ESFIELD03 VARCHAR2(255),
ESFIELD04 VARCHAR2(255),
ESFIELD05 VARCHAR2(255),
ESFIELD06 VARCHAR2(255),
ECFIELD07 VARCHAR2(2048),
ECFIELD08 VARCHAR2(2048),
ENFIELD17 NUMBER(22,10),
ENFIELD18 NUMBER(22,10),
ENFIELD19 NUMBER(22,10),
ENFIELD20 NUMBER(22,10),
EDFIELD33 DATE,
EDFIELD34 DATE,
EDFIELD35 DATE,
EDFIELD36 DATE,
EBFIELD50 BLOB,
EBFIELD51 BLOB,
ETFIELD52 BLOB,
ETFIELD53 BLOB
)
partition by list (FSTATE)
(
partition P1 values ('tmsSend')
tablespace DSEZHAJ_SYS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
),
partition P2 values ('tmsAborted')
tablespace DSEZHAJ_SYS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
),
partition P3 values ('tmsFinished')
tablespace DSEZHAJ_SYS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
),
partition P4 values ('tmsCanceled')
tablespace DSEZHAJ_SYS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
),
partition P5 values ('tmsReturned')
tablespace DSEZHAJ_SYS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
),
partition P6 values ('tmsWaited')
tablespace DSEZHAJ_SYS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
),
partition P7 values ('tmsProcessing')
tablespace DSEZHAJ_SYS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
)
);
-- Create/Recreate indexes
create index TT_FSTATE_FRORGURL on TT (FSTATE)
tablespace INDEX_SYS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 61M
minextents 1
maxextents unlimited
);
create index TT_I1 on TT (FRDEPT)
tablespace INDEX_SYS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 72M
minextents 1
maxextents unlimited
);
create index TT_I2 on TT (FRPOSITION)
tablespace INDEX_SYS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 46M
minextents 1
maxextents unlimited
);
create index TT_I3 on TT (FRPERSON)
tablespace INDEX_SYS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 48M
minextents 1
maxextents unlimited
);
create index TT_I4 on TT (FRORGURL)
tablespace INDEX_SYS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
create index TT_I5 on TT (FTASKGUID)
tablespace INDEX_SYS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
create index TT_I6 on TT (FRDEPT, FRPOSITION, FRPERSON)
tablespace INDEX_SYS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
); |
|