create index hdr.INDEX_USER on hdr.tb_User_Feel_temp(user)tablespace GT
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  )
这样建立的索引,为什么查询的时候不走索引语句:select * from tb_User_Feel_temp where user ='aaa'但是对于另外一张表,表结构完全一样,建立索引的语句也一摸一样,却能走索引
两个索引的属性GLOBAL_STATS
一个是YES一个是NO

解决方案 »

  1.   

    用不用索引跟很多因素有关,表中的数据量大小,索引列的选择性,数据的分布情况。
    现在oracle默认基于cost优化模式,是要根据表中的统计数据来计算成本自动决定执行计划的。两表的数据是一样的吗?
    你可以收集统计数据后,再对比一下两表的执行计划。
    GLOBAL_STATS是yes(dbms_stats包分析过)或no(analyze分析过)影响不大。
      

  2.   

    会不会是收集表的信息噢。
    按道理你那语句是会走索引的,这种情况应该是走rule模式。
    begin
    dbms_stats.gather_table_stats('用户名',TableName,cascade => true);--cascade 为true时,表示对索引也进行分析;
    end;
      

  3.   

    默认ocb,看开销的.和数据量有关.不一定非走索引的..