我有一个表“数据”,其中大约100,000,000条记录。 我已经添加了一个新的列“batch_id”(整数)。MySQL更新变得非常缓慢对表结束
在应用程序层上,我正在更新每个10,000,000条记录的10000个记录的batch_id(batch_id对于10k总是相同)。
我在做这样的事情(应用层伪代码):
loop {
$batch_id = $batch_id + 1;
mysql.query("UPDATE data SET batch_id='$batch_id' WHERE batch_id IS NULL LIMIT 10000");
}
我对BATCH_ID列的索引。
一开始,这个更新语句花了约30秒。我现在正在桌子的中途,它变得越来越慢。目前同样的陈述大约需要10分钟(!)。它已经达到了不再可行的程度,因为它需要花费一个多月的时间以当前速度更新整个表。
我能做些什么来加速它,为什么MySQL在表的末尾变得更慢? 主键上的索引可以帮助吗?
“~30秒”为前10,000行?什么是'result_id'? –
可以请你为SQL显示一个解释吗? –
这是什么语言? Ruby似乎有些模糊,但它使用全局变量。 – tadman