Oracle 11gR2 – 查看功能列评估
发布时间:2021-01-12 01:53:29 所属栏目:站长百科 来源:网络整理
导读:对于具有为列定义的函数以及何时评估这些函数的Oracle视图,我似乎有一个奇怪的问题. 假设我有以下视图和函数定义: CREATE OR REPLACE VIEW test_view_one ASSELECT column_one,a_package.function_that_returns_a_value(column_one) function_columnFROM a_
-------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 25 | 975 | 2 (0)| 00:00:01 | |* 1 | VIEW | | 25 | 975 | 2 (0)| 00:00:01 | |* 2 | COUNT STOPKEY | | | | | | | 3 | VIEW | | 26 | 676 | 2 (0)| 00:00:01 | |* 4 | INDEX RANGE SCAN| TEST_IDX | 26 | 130 | 2 (0)| 00:00:01 | -------------------------------------------------------------------------------- 这里只访问了所需的25行,因此该函数不能被称为N次. 现在重要的考虑因素,在A情况下,函数可以,但不需要为每一行调用.我们怎么看? 答案在解释计划的列投影中. 4 - (#keys=1) "ID"[NUMBER,"MY_PACKAGE"."MY_FUNCTION"("ID")[22] 相关的第4行显示,在SORT操作中调用该函数,因此每行都调用该函数. (排序获取所有行). 结论 我在11.2上的测试显示,在A(具有SORT ORDER BY STOPKEY的完全扫描)的情况下,调用视图函数 最后的笔记 我也在12.1中对此进行了测试,并在下面看到了列投影的变化. Column Projection Information (identified by operation id): ----------------------------------------------------------- ... 3 - "A"."ID"[NUMBER,22] 5 - "ID"[NUMBER,22] 当然在12c中,可以使用OFFSET的新功能 – FETCH NEXT. 祝好运! (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |