有一个表中多个字段有索引,跟其它表关联查询都能用上,很快!
现在我对新建一个 DECODE 函数的索引,这函数是对其中一个已经有索引的字段操作的,
现在单独用这表并使用DECODE索引来查很快了,但一关联其它表来查,原有的索引都没用上,
进行了全表扫描,很慢!
虽然可以对第二张表指定使用索引,但如果我要关联五张表呢?
请高手指点下问题出在哪里?
怎么才能快起来?
谢谢了 !

解决方案 »

  1.   


    对本表用到了那个DECODE 索引,对另一个表做了全表扫描。
    对表新加索引都要重新进行分析过吗?
    这里每个表都是用了几年的了,应该早分析过了。
      

  2.   

    Oracle的表分析是做什么的?
    怎么做表分析?
    什么时候应该做表分析?谢谢指点
      

  3.   

    你创建了函数索引后没有做表分析吗?
    analyze table <表名> compute statistics;
      

  4.   

    创建函数索引之后,必须分析一下,Oracle才会“考虑”使用该函数索引。注意不是必然使用,而是“考虑”使用。你可以用 /*+INDEX()*/ 提示强制使用该函数索引。
      

  5.   

    检查以下参数:
    show parameter query
    query_rewrite_enabled boolean TRUE
    query_rewrite_integrity string enforced
      

  6.   

    我看过 show parameter query
    query_rewrite_enabled 为 FALSE 
    但要设置 为TRUE 才生效是 8I 的要求,我这里 9I 已经没有这限制了,实际测试单个表查也使用了那函数索引,但一关联其它表的话,除了那函数索引外,其它表都做了全表扫描!
    不知道是不是没有分析表的原因?下班后分析下看看。