|
|
原帖由 newkid 于 2008-9-10 03:16 发表 ![]()
刚才试了下,NO_MERGE HINT确实起作用了,但它不能防止ORACLE把 filter("N"=1) 改写为 filter("PKG"."INC_N"()=1),因此出来的答案总是不对劲。
任何分析函数也能够和ROWNUM一样起作用:
exec pkg.reset_n;
select * from (select pkg.inc_n n, count(*) over() from t) v where n = 1;
奇怪, 我怎么没发现NO_MERGE 起作用了呢, 我不管加不加, 其执行计划的 Access predicates, Filter predicates 没有任何变化, 都是 Filter("SCOTT"."PKG"."INC_N"() = 1)
9i, 10g 环境下我测试出都这样. |
|