有两台机器,都执行相同的代码我检查了索引,主键都一样,但是其中一台机器A  使用"HASH JOIN,   TABLE ACCESS FUN"   没用到索引,速度比较慢
另外一台机器B, 使用了索引"INDEX RANGE SCAN"   速度比较快请问我想在A上面查询的时候  使用这个索引    应该怎么做啊?     检查什么配置?   添加什么命令?

解决方案 »

  1.   

    HASH JOIN,关联表的关联字段是否有索引~~~
      

  2.   

    非要用索引可以使用hint
    /*+index(tb_name,idx_name)*/
    例如:
    select /*+index(t,idx_t_id)*/* from t t.id>100 ;看一下是否走索引的开销较低 .然后再进行下一步分析.
      

  3.   

    在最外层的select后面加/*+index(tb_name,idx_name)*/,tb_name可以是表名,也可以是表的别名,idx_name就是你想要用的索引的名称.
      

  4.   

    查看一下你的OPTIMIZER_MODE
    SHOW PARAMETER OPTIMIZER_MODEsession的这个参数也可以看一下看看两台机器是否一样
    同样的语句,因为优化器的选择不同可能走索引或者不走索引
    还有在你的数据库上看看2个机器上的表有没有统计信息。
    CBO方式的优化器,如果有统计信息会先用统计信息再用索引的。