【发布时间】:2011-01-26 14:42:30
【问题描述】:
我需要从一个表中选择数据并将其插入到另一个表中。目前 SQL 看起来像这样:
INSERT INTO A (x, y, z)
SELECT x, y, z
FROM B b
WHERE ...
但是,SELECT 非常庞大,导致超过 200 万行,我们认为它占用了太多内存。 Informix(本例中的 db)在运行查询时会耗尽虚拟内存。
我将如何选择和插入一组行(比如 2000 年)?鉴于我认为没有任何行 ID 等。
【问题讨论】:
-
试试
FIRST;LIMIT是支持 10+ 的同义词:publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/… -
是的,将其与
skip结合使用,您可以循环遍历整个集合。(如果您知道总行数) -
如果表 B 发生变化,您不会冒着跳过未复制的行的风险吗?我知道我没有提到表 B 可以更改,在我的情况下可能不会更改,但我只是在这里大声思考。
标签: sql database select informix