|
|
发表于 2007/12/3 15:05:29
|
显示全部楼层
我看是NJ_JOB_STATUS表的索引问题
根据你的plan, 使用了nested loops. 可以理解为下面这样的访问方法:
FOR a IN (select * from NJ_WIPGT_DTL NWD where....) LOOP
FOR b IN (select * from NJ_JOB_STATUS where WIP_ENTITY_ID = a.WIP_ENTITY_ID)
LOOP
RETURN A.*,b.*;
END LOOP;
END LOOP;
所以 访问NJ_JOB_STATUS 表的时候, 最快的应该是使用基于WIP_ENTITY_ID的索引, 从Plan里看, 使用的是NJ_JOB_STATUS_N3. 这是针对WIP_ENTITY_ID的索引吗?
另外, 表最近有没有analyze过? 最后, 把你的hint去掉後看看plan和运行时间, 就我个人而言, 我选择尽量不用hint. 我所遇到的性能出问题的sql, 多数是因为用错了hint, 或者在不该用hint的时候用了hint. oracle的cbo 正在越来越强大以至于越来越不需要开发人员手工加hint了. |
|