设为首页 - 加入收藏 PHP编程网 - PHP站长网 (http://www.52php.cn)- 电商,百科,编程,业界,移动互联,5G,云计算,站长网!
热搜: google 娱乐 服务 百度
当前位置: 首页 > 站长百科 > 正文

Oracle SQL – 了解Dual表的工作原理

发布时间:2021-01-23 20:45 所属栏目:[站长百科] 来源:网络整理
导读:在制作一个小型测试表的过程中,我在网上偶然发现了以下文章: ( http://www.techonthenet.com/sql/insert.php)给出了如何在Oracle中插入多行固定值的以下解决方案: Insert AllInto testTable (key,field1,field2) Values (1,10,'a')Into testTable (key,f

在制作一个小型测试表的过程中,我在网上偶然发现了以下文章:
( http://www.techonthenet.com/sql/insert.php)给出了如何在Oracle中插入多行固定值的以下解决方案:

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中的某些函数只是硬编码,当他们看到双表时会采取不同的行为?
>更具体地说,引用它如何允许上面的代码基本上循环遍历多个Into … Values …语句?

有人可以向我解释一下吗?

解决方法

在功能上,双重只是一个单行表,你恰好可以指望它总是存在并且总是只有1行.您可以轻松地创建自己的单行表并使用它而不是双表.或者您可以使用一个您知道将始终返回1行的查询(即从all_objects中选择*,其中rownum< 2). 在幕后,Oracle能够针对您创建的单行表优化双重查询.优化器知道该表总是只有1行,因此它可以根据它进行优化.而Oracle可以消除使用 “fast dual” operation甚至命中表的需要,以避免执行任何逻辑I / O.这些优化并不是你在这样的查询中会注意到的那种优点,当你在紧密循环中执行类似命令来计算各种表达式时,它们可能很有用.

在这种情况下,select * from dual仅存在,因为多表INSERT语句需要查询作为源.通常,在创建多表INSERT时,您将从源中选择数据并将其中的部分或全部插入到多个表中.但是,在这种情况下,您实际上根本没有使用SELECT语句中的数据,因此无论您选择什么或从中选择数据都无关紧要.

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

推荐文章
热点阅读