Oracle SQL – 了解Dual表的工作原理
在制作一个小型测试表的过程中,我在网上偶然发现了以下文章:
Insert All Into testTable (key,field1,field2) Values (1,10,'a') Into testTable (key,field2) Values (2,20,'b') Into testTable (key,field2) Values (3,30,'c') Into testTable (key,field2) Values (4,40,'d') Select * from dual; 双重的使用是我以前从未见过的,所以我开始做一些研究,以了解它是如何工作的.我知道这个表是针对某些oracle语法的解决方法,但它如何完??成这些任务仍然没有为我点击.我知道其他人也问过类似的问题(How does Oracle SELECT FROM dual work with multiple fields),但我还没有看到任何人解释实际情况. >这是一个参考技巧,他们可以使用单值表来实现,或者Oracle中的某些函数只是硬编码,当他们看到双表时会采取不同的行为? 有人可以向我解释一下吗? 解决方法在功能上,双重只是一个单行表,你恰好可以指望它总是存在并且总是只有1行.您可以轻松地创建自己的单行表并使用它而不是双表.或者您可以使用一个您知道将始终返回1行的查询(即从all_objects中选择*,其中rownum< 2). 在幕后,Oracle能够针对您创建的单行表优化双重查询.优化器知道该表总是只有1行,因此它可以根据它进行优化.而Oracle可以消除使用 “fast dual” operation甚至命中表的需要,以避免执行任何逻辑I / O.这些优化并不是你在这样的查询中会注意到的那种优点,当你在紧密循环中执行类似命令来计算各种表达式时,它们可能很有用.在这种情况下,select * from dual仅存在,因为多表INSERT语句需要查询作为源.通常,在创建多表INSERT时,您将从源中选择数据并将其中的部分或全部插入到多个表中.但是,在这种情况下,您实际上根本没有使用SELECT语句中的数据,因此无论您选择什么或从中选择数据都无关紧要. (编辑:徐州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |