查看: 2314|回复: 7

[性能调整] 补贴---一个性能优化问题!!!!!!!

[复制链接]
论坛徽章:
0
发表于 2009-12-29 13:39 | 显示全部楼层 |阅读模式
SELECT WORKITEMID
          FROM WFWIPARTICIPANT
         WHERE (PARTICIPANTTYPE = 'person' AND PARTICIPANT = :1)
            OR (PARTICIPANTTYPE = 'organization' AND
               INSTR('99999.44.288.923.', '.' || PARTICIPANT || '.') > 0)

为什么老是全表扫描??

我的表和索引定义如下----前一个帖子表搞错了

create table WFWIPARTICIPANT
(
  WIPARTICID      NUMBER not null,
  WORKITEMID      NUMBER,
  PARTICIPANTTYPE VARCHAR2(20),
  PARTICIPANT     VARCHAR2(256),
  PARTICIPANT2    VARCHAR2(64),
  WORKITEMSTATE   NUMBER(2),
  PARTIINTYPE     VARCHAR2(20),
  EXTEND1         VARCHAR2(64)
)
tablespace TSSAPUB
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 384
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints
alter table WFWIPARTICIPANT
  add constraint PK_WFWIPARTICIPANT primary key (WIPARTICID)
  using index
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 192K
    minextents 1
    maxextents unlimited
  );
alter table WFWIPARTICIPANT
  add constraint FK_WFWIPART_REFERENCE_WFWORKIT foreign key (WORKITEMID)
  references WFWORKITEM (WORKITEMID);
-- Create/Recreate indexes
create index IDX_WFWIPART_WIID on WFWIPARTICIPANT (WORKITEMID)
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 192K
    minextents 1
    maxextents unlimited
  );
create index WF_IDX_PART_EXTEND1 on WFWIPARTICIPANT (EXTEND1)
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 256K
    minextents 1
    maxextents unlimited
  );
create index WF_IDX_PART_TYPE on WFWIPARTICIPANT (PARTICIPANTTYPE, PARTICIPANT)
  tablespace TSSAPUB
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 256K
    minextents 1
    maxextents unlimited
  );
论坛徽章:
44
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562012新春纪念徽章
日期:2012-02-13 15:10:58
发表于 2009-12-29 13:46 | 显示全部楼层
不一定要走索引才是优的

要看具体的数据情况

使用道具 举报

回复
招聘 : Java研发
认证徽章
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14蜘蛛蛋
日期:2012-12-26 18:16:01茶鸡蛋
日期:2012-11-16 08:12:48ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07奥运会纪念徽章:网球
日期:2012-08-23 14:58:08奥运会纪念徽章:沙滩排球
日期:2012-07-19 17:28:14版主2段
日期:2012-07-07 02:21:02咸鸭蛋
日期:2012-03-23 18:17:482012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
发表于 2009-12-29 14:03 | 显示全部楼层
最好是把这个逻辑单独处理
OR (PARTICIPANTTYPE = 'organization' AND
               INSTR('99999.44.288.923.', '.' || PARTICIPANT || '.') > 0)

使用道具 举报

回复
招聘 : Java研发
认证徽章
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14蜘蛛蛋
日期:2012-12-26 18:16:01茶鸡蛋
日期:2012-11-16 08:12:48ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07奥运会纪念徽章:网球
日期:2012-08-23 14:58:08奥运会纪念徽章:沙滩排球
日期:2012-07-19 17:28:14版主2段
日期:2012-07-07 02:21:02咸鸭蛋
日期:2012-03-23 18:17:482012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
发表于 2009-12-29 14:09 | 显示全部楼层
OR (PARTICIPANTTYPE = 'organization' AND
               INSTR('99999.44.288.923.', '.' || PARTICIPANT || '.') > 0)

好像可以改成
OR (PARTICIPANTTYPE = 'organization' AND
               PARTICIPANT  IN('44','288','923'))

使用道具 举报

回复
论坛徽章:
44
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562012新春纪念徽章
日期:2012-02-13 15:10:58
发表于 2009-12-29 14:18 | 显示全部楼层
楼上说的极是

使用道具 举报

回复
论坛徽章:
0
 楼主| 发表于 2009-12-29 14:48 | 显示全部楼层
改成in还是全表扫描啊   我的数据库是ALL rows模式的  并且数据库里面数据库有10w条

使用道具 举报

回复
招聘 : Java研发
认证徽章
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14蜘蛛蛋
日期:2012-12-26 18:16:01茶鸡蛋
日期:2012-11-16 08:12:48ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07奥运会纪念徽章:网球
日期:2012-08-23 14:58:08奥运会纪念徽章:沙滩排球
日期:2012-07-19 17:28:14版主2段
日期:2012-07-07 02:21:02咸鸭蛋
日期:2012-03-23 18:17:482012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
发表于 2009-12-29 14:52 | 显示全部楼层
执行计划贴出来。。。

使用道具 举报

回复
论坛徽章:
14
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52沸羊羊
日期:2015-03-04 14:43:43马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11福特
日期:2013-10-14 21:18:25凯迪拉克
日期:2013-09-23 23:01:572013年新春福章
日期:2013-02-25 14:51:242012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412011新春纪念徽章
日期:2011-02-18 11:43:33
发表于 2009-12-29 15:39 | 显示全部楼层

回复 #1 liuhaitao320 的帖子

改成這樣看看
SELECT WORKITEMID
          FROM WFWIPARTICIPANT
         WHERE (PARTICIPANTTYPE = 'person' AND PARTICIPANT = :1)
union
SELECT WORKITEMID
          FROM WFWIPARTICIPANT
             where PARTICIPANTTYPE = 'organization' AND
               INSTR('99999.44.288.923.', '.' || PARTICIPANT || '.') > 0

結合4樓的意見,在區分度高的column上建index,表達式是沒法走索引,除非建函數索引

使用道具 举报

回复

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

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

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