更新与插入

时间:2012-03-20 12:24:27

标签: mysql performance insert innodb

我们正在使用innodb并拥有一个拥有数百万行的表。其中一个将是varchar(32),其值会经常更改。在数万行上对此varchar进行更新需要花费很长时间,因此我们尝试将此字段拆分为自己的表,然后不进行更新,我们可以执行删除操作通过使用文件中的加载数据的批量插入。
这似乎会大大提高性能。我错过了什么吗?
是否有更简单的方法来提高更新性能?以前有人做过这样的事吗?

2 个答案:

答案 0 :(得分:0)

如果您可以单独根据indeces选择要更新的行,那么实际上应该与您的建议相同(并且仍然保持理智的数据组织,因此更可取)。安静可能这比自己做得更快。

答案 1 :(得分:0)

您可以创建适合更新语句的where子句的索引。

将其拆分的想法可能会提高性能(我不确定),但只有当所有值立即改变时才会改善。当单个值发生变化时,这种方法比使用一个表的方法慢。

更快的另一个先决条件是,您必须事先知道第二个表的key->值映射。如果你必须查看第一个表来决定如何在第二个表中存储值,那么你也比一个表慢。