加入收藏 | 设为首页 | 会员中心 | 我要投稿 孝感站长网 (https://www.0712zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

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

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

在制作一个小型测试表的过程中,我在网上偶然发现了以下文章:
( 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语句中的数据,因此无论您选择什么或从中选择数据都无关紧要.

(编辑:孝感站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读