我们正在使用innodb并拥有一个拥有数百万行的表。其中一个列将是varchar(32)
,其值会经常更改。在数万行上对此varchar
进行更新需要花费很长时间,因此我们尝试将此字段拆分为自己的表,然后不进行更新,我们可以执行删除操作通过使用文件中的加载数据的批量插入。
这似乎会大大提高性能。我错过了什么吗?
是否有更简单的方法来提高更新性能?以前有人做过这样的事吗?
答案 0 :(得分:0)
如果您可以单独根据indeces选择要更新的行,那么实际上应该与您的建议相同(并且仍然保持理智的数据组织,因此更可取)。安静可能这比自己做得更快。
答案 1 :(得分:0)
您可以创建适合更新语句的where子句的索引。
将其拆分的想法可能会提高性能(我不确定),但只有当所有值立即改变时才会改善。当单个值发生变化时,这种方法比使用一个表的方法慢。
更快的另一个先决条件是,您必须事先知道第二个表的key->值映射。如果你必须查看第一个表来决定如何在第二个表中存储值,那么你也比一个表慢。