解决方案 »

  1.   

    其实和索引没关系了,原来的sql是用嵌套循环连接(nest loop),而被循环的LOG表没有索引,导致每一条记录,LOG表都要被全表扫描一次,那当然慢了。而优化后的SQL, 对log表采用的是hash连接
      

  2.   

    对这几个表,重新收集一下统计信息,看看会不会不加hint就走你想要的执行计划先.
      

  3.   

      我想问的是这个很明显走全表会快,为什么oracle要选择走索引?
      

  4.   

    NESTED LOOP不适合于数据量过大的场合。
    而HASH JOIN是CBO 做大数据集连接时的常用方式。至于为什么不走全表,这个就不知道CBO怎么搞的了。