在以下方面是否有性能优势
INSERT INTO table1( column1) select * from table2;反对
BEGIN
FOR t2Row IN SELECT * FROM table2 LOOP
EXECUTE 'INSERT INTO ...'
END LOOP;
END;最有趣的是postgresql数据库引擎。我相信第一个查询会消耗更多内存,因为它缓冲了整个结果,但是第一个查询会更快吗?
发布于 2011-08-17 20:26:06
这里有一个涉及到这个主题的SO答案:RBAR vs. Set based programming for SQL
我要说的是,第一种方法比第二种方法快得多,因为它是基于集合的(正如marc_s所提到的)。
此外,第二种方法涉及切换到SQL,然后针对循环的每次迭代再次切换。我不是Postgres用户,但在Oracle中,这仅在上下文切换中就会导致性能开销,这取决于涉及的记录数量,这可能是非常重要的。
第一种方法也是最简单的,并且在大多数环境中,最简单的方法也是最容易支持的。
不过为了回答你的问题,第一种方法比第二种方法更快。
https://stackoverflow.com/questions/7091852
复制相似问题