优化 Oracle 多行插入
本指南详细介绍了将多行插入 Oracle 数据库的有效方法,重点介绍优于 MySQL 中使用的方法。
INSERT ALL
声明
Oracle 的 INSERT ALL
语法为多行插入提供了强大的解决方案:
<code class="language-sql">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;</code>
这里:
t
指定目标表。col1
、col2
、col3
代表表格的列。val1_1
到 val3_3
是要插入的值。DUAL
是内置虚拟表,用于单行查询。简化语法(Oracle 23c 及更高版本)
Oracle 23c 引入了更简化的语法:
<code class="language-sql">INSERT INTO t(col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3'), ('val2_1', 'val2_2', 'val2_3'), ('val3_1', 'val3_2', 'val3_3');</code>
与 INSERT ALL
相比,此方法提供了改进的简洁性和性能。
性能最佳实践
虽然较新的语法通常更适合批量插入,但请考虑限制每个插入语句的行数,以最大限度地减少解析开销并最大限度地提高效率,即使使用 Oracle 23c 改进的语法也是如此。 对于非常大的数据集,请使用 SQL*Loader 等其他技术进行研究。
以上是Oracle数据库如何高效地进行多行插入?的详细内容。更多信息请关注PHP中文网其他相关文章!