当前位置: 代码迷 >> Oracle技术 >> 为什么加了索引执行更慢了呢?解决办法
  详细解决方案

为什么加了索引执行更慢了呢?解决办法

热度:43   发布时间:2016-04-24 08:35:38.0
为什么加了索引执行更慢了呢?
表结构如下:
SQL code
-- Create tablecreate table T_GG_MOBILENO_SENDABLE(  sendable_id          NUMBER(10) not null,  mobileno_id          NUMBER(10),  mobileno             NUMBER(11),  mobileno_kind        NUMBER(4),  mobileno_age         NUMBER(4),  mobileno_money       NUMBER(8),  mobileno_area        NVARCHAR2(6),  mobileno_sex         NUMBER(1),  mobileno_double      NUMBER(1),  mobileno_treble      NUMBER(1))tablespace GXT  pctfree 10  pctused 40  initrans 1  maxtrans 255  storage  (    initial 64K    minextents 1    maxextents unlimited  );-- Create/Recreate indexes create index INDEX_T_GG_MOBILENO_AGE on T_GG_MOBILENO_SENDABLE (MOBILENO_AGE)  tablespace GXT  pctfree 10  initrans 2  maxtrans 255  storage  (    initial 64K    minextents 1    maxextents unlimited  );create index INDEX_T_GG_MOBILENO_AREA on T_GG_MOBILENO_SENDABLE (MOBILENO_AREA)  tablespace GXT  pctfree 10  initrans 2  maxtrans 255  storage  (    initial 64K    minextents 1    maxextents unlimited  );create index INDEX_T_GG_MOBILENO_DOUBLE on T_GG_MOBILENO_SENDABLE (MOBILENO_DOUBLE)  tablespace GXT  pctfree 10  initrans 2  maxtrans 255  storage  (    initial 64K    minextents 1    maxextents unlimited  );create index INDEX_T_GG_MOBILENO_KIND on T_GG_MOBILENO_SENDABLE (MOBILENO_KIND)  tablespace GXT  pctfree 10  initrans 2  maxtrans 255  storage  (    initial 64K    minextents 1    maxextents unlimited  );create index INDEX_T_GG_MOBILENO_MONEY on T_GG_MOBILENO_SENDABLE (MOBILENO_MONEY)  tablespace GXT  pctfree 10  initrans 2  maxtrans 255  storage  (    initial 64K    minextents 1    maxextents unlimited  );create index INDEX_T_GG_MOBILENO_SENDABLE on T_GG_MOBILENO_SENDABLE (MOBILENO)  tablespace GXT  pctfree 10  initrans 2  maxtrans 255  storage  (    initial 64K    minextents 1    maxextents unlimited  );create index INDEX_T_GG_MOBILENO_SEX on T_GG_MOBILENO_SENDABLE (MOBILENO_SEX)  tablespace GXT  pctfree 10  initrans 2  maxtrans 255  storage  (    initial 64K    minextents 1    maxextents unlimited  );create index INDEX_T_GG_MOBILENO_TREBLE on T_GG_MOBILENO_SENDABLE (MOBILENO_TREBLE)  tablespace GXT  pctfree 10  initrans 2  maxtrans 255  storage  (    initial 64K    minextents 1    maxextents unlimited  );-- Create/Recreate primary, unique and foreign key constraints alter table T_GG_MOBILENO_SENDABLE  add constraint PK_T_GG_MOBILENO_SENDABLE primary key (SENDABLE_ID)  using index   tablespace GXT  pctfree 10  initrans 2  maxtrans 255  storage  (    initial 64K    minextents 1    maxextents unlimited  );



SQL语句:
SQL code
select  count( distinct( MOBILENO))  from t_gg_mobileno_sendable a WHERE (MOBILENO_KIND = 1        and MOBILENO_AGE >= 0 and MOBILENO_AGE <= 99 and       MOBILENO_MONEY between 0 and 999)



Where后面的条件是动态的 所以有的索引暂时没有用到

这是为什么捏?如果对count加强制索引 怎么加?



------解决方案--------------------


贴下执行计划.
------解决方案--------------------

把表分析一下,在看看执行计划,是否有变。
------解决方案--------------------
索引的规则挺多的,应该是某些索引失效

------解决方案--------------------
MOBILENO_AGE
MOBILENO_MONEY 的查询条件都要+ >0 的条件么?
------解决方案--------------------
还是看下执行计划 看下究竟慢在哪里
------解决方案--------------------
同上。没有环境分析不出来,贴出执行计划帮你分析
------解决方案--------------------
  相关解决方案