SELECT * 
FROM a,b,c 
WHERE
a.f1 = b.f1 AND
a.f2 = c.f1 AND
a.f3 = c.f2a表pk  f1
b表pk  f1
c表pk  f1,f2a表,5万条记录
b表,10条
c表,100条现在这个sql文性能很差,甚至把b表所有记录清空了也一样。
怎么进行优化?

解决方案 »

  1.   

    对a、b、c三个表做分析。exec dbms_stats.gather_table_stats('USERNAME','TABLENAME')
      

  2.   

    sqlplus 看执行计划 sql>set autotrace trace exp
     sql>SELECT * 
    FROM a,b,c 
    WHERE
    a.f1 = b.f1 AND
    a.f2 = c.f1 AND
    a.f3 = c.f2看下执行计划 查看等待事件  select * from v$session_wait估计是A表没有用上索引,建立A表的(F1,F2,F3)复合索引再试下
      

  3.   

    SELECT * 
    FROM c,a,b
    WHERE
    a.f2 = c.f1 AND
    a.f3 = c.f2 AND
    b.f1 = a.f1