首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"insert into select“与"select和loop for insert”性能差异

"insert into select“与"select和loop for insert”性能差异
EN

Stack Overflow用户
提问于 2011-08-17 19:11:01
回答 1查看 2.1K关注 0票数 1

在以下方面是否有性能优势

代码语言:javascript
复制
INSERT INTO table1( column1) select * from table2;

反对

代码语言:javascript
复制
BEGIN
FOR t2Row IN SELECT * FROM table2 LOOP
   EXECUTE 'INSERT INTO ...'
END LOOP;
END;

最有趣的是postgresql数据库引擎。我相信第一个查询会消耗更多内存,因为它缓冲了整个结果,但是第一个查询会更快吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-17 20:26:06

这里有一个涉及到这个主题的SO答案:RBAR vs. Set based programming for SQL

我要说的是,第一种方法比第二种方法快得多,因为它是基于集合的(正如marc_s所提到的)。

此外,第二种方法涉及切换到SQL,然后针对循环的每次迭代再次切换。我不是Postgres用户,但在Oracle中,这仅在上下文切换中就会导致性能开销,这取决于涉及的记录数量,这可能是非常重要的。

第一种方法也是最简单的,并且在大多数环境中,最简单的方法也是最容易支持的。

不过为了回答你的问题,第一种方法比第二种方法更快。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7091852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档