查看: 2584|回复: 2

[原创] 请教一个sql优化的问题

[复制链接]
论坛徽章:
0
发表于 2009-12-28 11:41 | 显示全部楼层 |阅读模式
1、语句如下:
SELECT
aa.workItemID,
aa.workItemName,
aa.workItemDesc,
aa.workItemType,
aa.currentState,
aa.participant,
aa.priority,
aa.isTimeOut,
aa.limitNum,
aa.limitNumDesc,
aa.createTime,
aa.startTime,
aa.endTime,
aa.finalTime,
aa.actionURL,
aa.processInstID,
aa.activityInstID,
aa.statesList,
aa.timeOutNum,
aa.timeOutNumDesc,
aa.extend2,
dd.activityInstName as activityInstName,
cc.currentState as procInstCurrState,
cc.processInstName as processInstName,
cc.createTime as procInstCreateTime,
cc.endTime as procInstEndtime,
bb.processDefName as processDefName,
bb.processChName as processChName,
bb.versionSign as versionSign,
bb.currentFlag as currentFlag
  From WFWorkItem aa, WFProcessDefine bb, WFProcessInst cc, WFActivityInst dd
Where
aa.processInstID = cc.processInstID
   and cc.processDefID = bb.processDefID
   and dd.processInstID = cc.processInstID
   and dd.activityInstID = aa.activityInstID;


2、各个表结构及索引如下:

WFWORKITEM表及索引
reate table WFWORKITEM
(
  WORKITEMID       NUMBER not null,
  WORKITEMNAME     VARCHAR2(64),
  WORKITEMTYPE     VARCHAR2(20),
  WORKITEMDESC     VARCHAR2(256),
  CURRENTSTATE     NUMBER(2),
  PARTICIPANT      VARCHAR2(64),
  PRIORITY         NUMBER(4),
  ISTIMEOUT        CHAR(1),
  LIMITNUM         NUMBER,
  LIMITNUMDESC     VARCHAR2(64),
  CREATETIME       DATE,
  STARTTIME        DATE,
  ENDTIME          DATE,
  FINALTIME        DATE,
  ACTIONURL        VARCHAR2(256),
  PROCESSINSTID    NUMBER,
  ACTIVITYINSTID   NUMBER,
  STATESLIST       VARCHAR2(256),
  TIMEOUTNUM       NUMBER,
  TIMEOUTNUMDESC   VARCHAR2(64),
  EXTEND1          VARCHAR2(64),
  EXTEND2          VARCHAR2(32),
  PROCESSINSTNAME  VARCHAR2(64),
  ACTIVITYINSTNAME VARCHAR2(64),
  PROCESSDEFID     NUMBER,
  PROCESSDEFNAME   VARCHAR2(64),
  PROCESSCHNAME    VARCHAR2(64),
  ACTIVITYDEFID    VARCHAR2(64),
  ASSISTANT        VARCHAR2(64),
  BIZSTATE         INTEGER,
  ALLOWAGENT       VARCHAR2(10)
)
tablespace TSSAPUB
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 17
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints
alter table WFWORKITEM
  add constraint PK_WFWORKITEM primary key (WORKITEMID)
  using index
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 2M
    minextents 1
    maxextents unlimited
  );
alter table WFWORKITEM
  add constraint FK_WFWORKIT_REFERENCE_WFACTIVI foreign key (ACTIVITYINSTID)
  references WFACTIVITYINST (ACTIVITYINSTID);
-- Create/Recreate indexes
create index IDX_PROCESS_INST_ID on WFWORKITEM (PROCESSINSTID, ACTIVITYINSTID)
  tablespace TSSAINDEX
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 128K
    minextents 1
    maxextents unlimited
  );
create index IDX_WFWI_PARTICI on WFWORKITEM (PARTICIPANT)
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 2M
    minextents 1
    maxextents unlimited
  );
create index IDX_WFWI_STATE on WFWORKITEM (CURRENTSTATE)
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 2M
    minextents 1
    maxextents unlimited
  );
create index WF_IDX_WI_ACTID on WFWORKITEM (ACTIVITYINSTID)
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 2M
    minextents 1
    maxextents unlimited
  );
create index WF_IDX_WI_PROCID on WFWORKITEM (PROCESSINSTID)
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 2M
    minextents 1
    maxextents unlimited
  );

---------------------------------------------------
create table WFPROCESSDEFINE
(
  PROCESSDEFID      NUMBER not null,
  PROCESSDEFNAME    VARCHAR2(64),
  PROCESSCHNAME     VARCHAR2(64),
  DESCRIPTION       VARCHAR2(256),
  CURRENTSTATE      NUMBER(2),
  VERSIONSIGN       VARCHAR2(64),
  VERSIONDESC       VARCHAR2(256),
  CURRENTFLAG       CHAR(1),
  PROCESSDEFCONTENT LONG,
  CREATETIME        DATE,
  UPDATETIME        DATE,
  OPERATOR          VARCHAR2(64),
  PROCESSDEFOWNER   VARCHAR2(64),
  PACKAGEID         VARCHAR2(64),
  PACKAGENAME       VARCHAR2(64),
  HASACTIVEINSTANCE CHAR(1),
  EXTEND1           VARCHAR2(64),
  EXTEND2           VARCHAR2(32)
)
tablespace TSSAPUB
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 160
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints
alter table WFPROCESSDEFINE
  add constraint PK_WFPROCESSDEFINE primary key (PROCESSDEFID)
  using index
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate indexes
create index IDX_PRO_DEF_NAME on WFPROCESSDEFINE (PROCESSDEFNAME)
  tablespace TSSAINDEX
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 128K
    minextents 1
    maxextents unlimited
  );
------------------------------------------------------------
create table WFPROCESSINST
(
  PROCESSINSTID   NUMBER not null,
  PROCESSINSTNAME VARCHAR2(64),
  PROCESSINSTDESC VARCHAR2(256),
  CREATOR         VARCHAR2(64),
  OWNER           VARCHAR2(64),
  CURRENTSTATE    NUMBER(2),
  PRIORITY        NUMBER(4),
  RELATEDATA      LONG,
  LIMITNUM        NUMBER,
  LIMITNUMDESC    VARCHAR2(64),
  CREATETIME      DATE,
  STARTTIME       DATE,
  ENDTIME         DATE,
  FINALTIME       DATE,
  PARENTPROCID    NUMBER,
  PARENTACTID     NUMBER,
  PROCESSDEFID    NUMBER,
  ISTIMEOUT       CHAR(1),
  TIMEOUTNUM      NUMBER,
  TIMEOUTNUMDESC  VARCHAR2(64),
  EXTEND1         VARCHAR2(64),
  EXTEND2         VARCHAR2(32)
)
tablespace TSSAPUB
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 144
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints
alter table WFPROCESSINST
  add constraint PK_WFPROCESSINST primary key (PROCESSINSTID)
  using index
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 384K
    minextents 1
    maxextents unlimited
  );
alter table WFPROCESSINST
  add constraint FK_WFPROCES_REFERENCE_WFPROCE1 foreign key (PROCESSDEFID)
  references WFPROCESSDEFINE (PROCESSDEFID);
-- Create/Recreate indexes
create index IDX$$_1CA60002 on WFPROCESSINST (CURRENTSTATE)
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 576K
    minextents 1
    maxextents unlimited
  );
create index IDX_PROCESS_DEF_ID on WFPROCESSINST (PROCESSINSTID, PROCESSDEFID)
  tablespace TSSAINDEX
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 128K
    minextents 1
    maxextents unlimited
  );
create index WF_IDX_PROCINST_PRODEFID on WFPROCESSINST (PROCESSDEFID)
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 384K
    minextents 1
    maxextents unlimited
  );
-----------------------------------------------------------------
create table WFACTIVITYINST
(
  ACTIVITYINSTID   NUMBER not null,
  ACTIVITYINSTNAME VARCHAR2(64),
  ACTIVITYINSTDESC VARCHAR2(256),
  ACTIVITYTYPE     VARCHAR2(20),
  CURRENTSTATE     NUMBER(2),
  PRIORITY         NUMBER(4),
  LIMITNUM         NUMBER,
  LIMITNUMDESC     VARCHAR2(64),
  CREATETIME       DATE,
  STARTTIME        DATE,
  ENDTIME          DATE,
  FINALTIME        DATE,
  SUBPROCESSID     NUMBER,
  ISTIMEOUT        CHAR(1),
  ACTIVITYDEFID    VARCHAR2(64),
  PROCESSINSTID    NUMBER,
  TIMEOUTNUM       NUMBER,
  TIMEOUTNUMDESC   VARCHAR2(64),
  ROLLBACKFLAG     CHAR(1),
  EXTEND1          VARCHAR2(64),
  EXTEND2          VARCHAR2(32)
)
tablespace TSSAPUB
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 10
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints
alter table WFACTIVITYINST
  add constraint PK_WFACTIVITYINST primary key (ACTIVITYINSTID)
  using index
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 2M
    minextents 1
    maxextents unlimited
  );
alter table WFACTIVITYINST
  add constraint FK_WFACTIVI_REFERENCE_WFPROCES foreign key (PROCESSINSTID)
  references WFPROCESSINST (PROCESSINSTID);
-- Create/Recreate indexes
create index IDX_PROCESS_ACTIVITY_ID on WFACTIVITYINST (ACTIVITYINSTID, PROCESSINSTID)
  tablespace TSSAINDEX
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 128K
    minextents 1
    maxextents unlimited
  );
create index WF_IDX_ACTINST_ACTDEFID on WFACTIVITYINST (ACTIVITYDEFID)
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 5M
    minextents 1
    maxextents unlimited
  );
create index WF_IDX_ACTINST_PROCID on WFACTIVITYINST (PROCESSINSTID)
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 3M
    minextents 1
    maxextents unlimited
  );
create index WF_IDX_ACTINST_SUBPROCID on WFACTIVITYINST (SUBPROCESSID)
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 3M
    minextents 1
    maxextents unlimited
  );


我的optimizer_mode                       string      ALL_ROWS

为什么我的WFACTIVITYINST 每次都是全表扫描啊 索引一点用都没有????????????????
论坛徽章:
11
生肖徽章2007版:虎
日期:2009-08-14 13:50:18ITPUB十周年纪念徽章
日期:2011-11-01 16:24:512010广州亚运会纪念徽章:自行车
日期:2011-03-19 13:35:152011新春纪念徽章
日期:2011-02-18 11:42:492010世博会纪念徽章
日期:2010-10-17 20:10:522010系统架构师大会纪念
日期:2010-09-03 16:39:572010新春纪念徽章
日期:2010-03-01 11:04:592010新春纪念徽章
日期:2010-01-04 08:33:08参与WIN7挑战赛纪念
日期:2009-11-06 16:05:25生肖徽章2007版:狗
日期:2009-09-10 11:32:03
发表于 2009-12-29 13:52 | 显示全部楼层
统计分析了吗?

使用道具 举报

回复
论坛徽章:
14
授权会员
日期:2006-12-21 16:46:152011新春纪念徽章
日期:2011-01-26 13:11:40ITPUB9周年纪念徽章
日期:2010-10-08 09:32:272010年世界杯参赛球队:巴拉圭
日期:2010-06-28 11:38:042010新春纪念徽章
日期:2010-01-04 08:33:08祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:猪
日期:2009-03-10 21:17:25数据库板块每日发贴之星
日期:2009-02-20 01:01:052009新春纪念徽章
日期:2009-01-04 14:52:28ITPUB元老
日期:2008-12-30 15:00:48
发表于 2009-12-29 17:21 | 显示全部楼层
没有执行计划怎么给你分析呢

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表