问题描述
嗨,
我有一个关于标量子查询的问题:
为什么Oracle不将标量-子查询-缓存限制为被声明为确定性的函数?
使用确定性关键字,开发人员指出函数是确定性的。在我看来,其他所有功能都需要假定为潜在的不确定性。
目前标量子查询可能很容易导致错误的结果,我想知道为什么它是这样构建的。当然,可以说专家应该知道这些细节,但这有点违反直觉-不是吗?我敢打赌,超过一半的开发人员 (了解标量-子查询) 不知道这种陷阱。
我希望对此发表简短的意见。提前非常感谢。
亲切的问候
我有一个关于标量子查询的问题:
为什么Oracle不将标量-子查询-缓存限制为被声明为确定性的函数?
使用确定性关键字,开发人员指出函数是确定性的。在我看来,其他所有功能都需要假定为潜在的不确定性。
目前标量子查询可能很容易导致错误的结果,我想知道为什么它是这样构建的。当然,可以说专家应该知道这些细节,但这有点违反直觉-不是吗?我敢打赌,超过一半的开发人员 (了解标量-子查询) 不知道这种陷阱。
我希望对此发表简短的意见。提前非常感谢。
亲切的问候
专家解答
你提出了一个很好的论点,但我认为 (这是我的意见,不是任何Oracle官方立场),我们的工作基础是,绝大多数函数将是确定性的,即使没有明确定义。
最终,我们必须相信开发人员对他们正在做的事情有合理的理解。即使撇开标量子查询,我也经常在SQL中看到很多函数调用,其中该函数引用了sysdate或systimetamp,从代码中可以相对明显地看出,开发人员假设这些将在整个查询过程中被固定...
我们将继续尽最大努力教育开发人员数据正确性的重要性。
最终,我们必须相信开发人员对他们正在做的事情有合理的理解。即使撇开标量子查询,我也经常在SQL中看到很多函数调用,其中该函数引用了sysdate或systimetamp,从代码中可以相对明显地看出,开发人员假设这些将在整个查询过程中被固定...
SQL> create or replace 2 function f(i varchar2) return varchar2 is 3 begin 4 return i||'-'||to_char(systimestamp,'HH24MISS:FF'); 5 dbms_lock.sleep(0.5); 6 end; 7 / Function created. SQL> SQL> select rownum, f(rownum) x 2 from dual 3 connect by level <= 10; ROWNUM X ---------- ------------------------------ 1 1-165100:802000000 2 2-165100:863000000 3 3-165100:863000000 4 4-165100:897000000 5 5-165100:897000000 6 6-165100:930000000 7 7-165100:930000000 8 8-165100:964000000 9 9-165100:964000000 10 10-165100:997000000 10 rows selected.复制
我们将继续尽最大努力教育开发人员数据正确性的重要性。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
669次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
629次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
539次阅读
2025-04-20 10:07:02
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
487次阅读
2025-04-17 17:02:24
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
482次阅读
2025-04-22 00:20:37
一页概览:Oracle GoldenGate
甲骨文云技术
464次阅读
2025-04-30 12:17:56
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
453次阅读
2025-04-22 00:13:51
火焰图--分析复杂SQL执行计划的利器
听见风的声音
409次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
371次阅读
2025-04-15 14:48:05
OR+DBLINK的关联SQL优化思路
布衣
349次阅读
2025-05-05 19:28:36