是否有任何性能优势
INSERT INTO table1( column1) select * from table2;
针对
BEGIN
FOR t2Row IN SELECT * FROM table2 LOOP
EXECUTE 'INSERT INTO ...'
END LOOP;
END;
在postgresql数据库引擎中非常有趣。我相信第一个查询消耗更多的内存,因为它缓冲整个结果,但第一次查询更快?
答案 0 :(得分:2)
这里有一个关于这个主题的答案: RBAR vs. Set based programming for SQL
我会说第一种方法比第二种方法快得多,因为它是基于集合的(如marc_s所述)。
此外,第二种方法涉及切换到SQL,然后在循环的每次迭代中再次返回。我不是Postgres用户,但在Oracle中,这将导致单独的上下文切换中的性能开销,具体取决于所涉及的记录数量,它可能非常重要。
第一种方法也是最简单的,在大多数环境中,最简单的方法最容易支持。
要回答你的问题,第一种方法比第二种方法更快。