SQL文优化问题
SELECT *
FROM a,b,c
WHERE
a.f1 = b.f1 AND
a.f2 = c.f1 AND
a.f3 = c.f2
a表pk f1
b表pk f1
c表pk f1,f2
a表,5万条记录
b表,10条
c表,100条
现在这个sql文性能很差,甚至把b表所有记录清空了也一样。
怎么进行优化?
------解决方案--------------------对a、b、c三个表做分析。exec dbms_stats.gather_table_stats( 'USERNAME ', 'TABLENAME ')
------解决方案--------------------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)复合索引再试下
------解决方案--------------------SELECT *
FROM c,a,b
WHERE
a.f2 = c.f1 AND
a.f3 = c.f2 AND
b.f1 = a.f1