1

我有一个处理超过 10000000 个数据的应用程序。

MainTable 有超过 10000000 条数据

我正在尝试将数据从主表插入到子表中

INSERT INTO SubTable(Value1,Value2)
SELECT Value1,Value2 FROM MainTable
GROUP BY Value1_ID;

在子表中执行某些处理后..我再次将新值更新到主表中

UPDATE MainTable inf,SubTable in
SET inf.Value1=in.Value1, inf.Value2=in.Value2
WHERE inf.Value1_ID= in.Value1_ID;

运行此查询时,整个服务器变得非常慢,它会停止整个其他事务。我在这里使用 JDBC 驱动程序管理器连接。如何避免这种情况?如何解决这个问题呢?

4

1 回答 1

1

如果您只需要偶尔执行一次,您可以设置一个小脚本,每隔几秒/分钟左右按批次更新一次,而不是在一次更新中更新整个表。其他进程将在两次更新之间自由执行查询。
例如,通过每分钟更新一批 100,000 行,如果您的表具有正确的索引,则需要 1~2 小时,但对性能的影响要小得多。

另一种解决方案是在服务器上的活动最低时(可能在周末?)进行更新,这样您就不会对其他进程产生太大影响。

于 2012-10-08T09:05:40.263 回答