我的数据库是用的RBO的优化器 
为什么我查询列上面有建索引,可是用这一列作为查询条件查询
却不会使用这个索引呢?大概什么原因,该怎么分析
哪位大大告诉下,在线等。。

解决方案 »

  1.   

    可我的是RBO的优化器啊。。这个应该没有COST的概念了吧
      

  2.   

    java3344520   貌似我跟你在同一个QQ群里面
      

  3.   

    你的查询SQL 怎么写的, 看看有没有限制索引, RBO 也有一定的规则的。 可能其他的规则优先了...
      

  4.   

    SQL很简单 就是SELECT * FROM TABLE_NAME WHERE XX=''; 
    XX列上有个索引(这张表是个分区表,XX列上的索引时LOCAL分区索引)
    执行的是全表扫描。。
      

  5.   

    在oracle9i之后,数据库已经不支持 RBO ,全部采用CBO,是不是该列的索引失效了啊。重新建立一下,
    在这就是你的索引的前导列必须和where条件的字段名相符。可以采用强制指定索引的方法试验一下。
    /*+ index(TBL_SMS_MO IDX_MO_MOBILE) */   指定表的索引,第一个是表名,第二个是索引名
                                                   如果表使用了别名的话,用别名。