客户为一数据仓库应用
(1)10053居然无法做跟踪,搞不懂,并且sql是第一遍硬解析执行。
alter session set events'10053 trace name context forever,level 1';
.trc里什么都没有,只有那个sql.
(2)执行select my_report.my_item_je_sum(20070117,5555,6666) from dual;
函数内含有以下语句:
select sum(nvl(f.dr_cny, 0) - nvl(f.cr_cny, 0))
from dw_fact f
where f.account_tl like '5555%'
and f.accounting_entity_id =6666
and f.time_id between 20070101 and 20070117;
但就是不走位图索引,但set sql_trace=true,再执行居然变得走位图索引,再set sql_trace=false,又不走了,见鬼。
另外:
(1)dw_fact是同义词,指向另一用户。
(2)命令行手工执行sql是走索引的。
(3)把同义词取消,存储过程里的sql直接引用另外用户下的表,执行计划会走索引。
无语。
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/112417/viewspace-983274/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/112417/viewspace-983274/