【发布时间】:2012-10-09 07:44:02
【问题描述】:
昨天我向question 询问了如何重写 SQL 以批量进行选择和插入。我需要这样做以尝试消耗更少的虚拟内存,因为我需要在此处移动数百万行。
目标是将行从表 B 移动到表 A。以下是我能想到的方法:
SQL #1)
INSERT INTO A (x, y, z)
SELECT x, y, z
FROM B b
WHERE ...
SQL #2)
FOREACH SELECT x,y,z INTO _x, _y, _z
FROM B b
WHERE ...
INSERT INTO A(_x,_y,_z);
END FOREACH;
以上是否有错误? 数据库是 Informix 11.5。
更新:
原来是其他原因导致 IDS 消耗了大量内存。上面的代码导致内存超过分配的阈值。在这一点上,我没有看到使用一种方法优于另一种方法的意义。
【问题讨论】:
-
你试过测量每一个吗?
-
这是微优化大赛吗?请原谅这个幽默,但这似乎是一个奇怪的问题......我也这样做,“移动”数百万行,虚拟内存管理细节在我的优化问题中并不经常出现。
标签: sql database syntax informix