gpt4 book ai didi

sql - 向 Oracle 中插入多行

转载 作者:行者123 更新时间:2023-12-04 00:53:49 25 4
gpt4 key购买 nike

discussion关于多行插入到 Oracle 中的两种方法进行了演示:

首先:

insert into pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE)
select 8000,0,'Multi 8000',1 from dual
union all select 8001,0,'Multi 8001',1 from dual

第二:
INSERT ALL
INTO t (col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3')
INTO t (col1, col2, col3) VALUES ('val2_1', 'val2_2', 'val2_3')
INTO t (col1, col2, col3) VALUES ('val3_1', 'val3_2', 'val3_3')
.
.
.
SELECT 1 FROM DUAL;

任何人都可以争论使用一种而不是另一种的偏好吗?

附言我自己没有做任何研究(甚至解释计划),所以任何信息或意见将不胜感激。

谢谢。

最佳答案

从性能的角度来看,这些查询是相同的。
UNION ALL不会影响性能,因为 Oracle估计UNION 'ed 查询仅在需要时,它不会首先缓存结果。
SELECT从这个意义上说,语法更灵活,您可以更轻松地操作 SELECT查询是否要更改某些内容。

例如,这个查询:

insert into pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE)
select 8000,0,'Multi 8000',1 from dual
union all select 8001,0,'Multi 8001',1 from dual

可以改写为
INSERT
INTO pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE)
SELECT 7999 + level, 0, 'Multi ' || 7999 + level, 1
FROM dual
CONNECT BY
level <= 2

通过替换 2使用适当的数字,您可以获得所需的任意数量的行。

如果是 INSERT ALL ,您将不得不复制目标表描述,如果您需要,例如 40,这会降低可读性。行。

关于sql - 向 Oracle 中插入多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/883706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com