优化更新

时间:2015-01-26 08:44:32

标签: sql postgresql optimization

我一直在尝试对包含2列(id和nb_send)的巨大表(大约6百万行)进行大量更新

我只需要增加一列(nb_send)

这是查询:

UPDATE nb_send 
  SET n_nb_send = n_nb_send + 1 
WHERE n_id = ( .., .., .. with the 100K ids, etc.. )

当我想要更新100K行时,需要花费很多时间(我从未等到最后因为它超过了40分钟)而且我想在不到2分钟的时间内完成。

2 个答案:

答案 0 :(得分:0)

尝试从此表中删除所有索引(以及使用nb_send列的表中的索引),然后更新nb_send,然后重新创建所有索引。

我希望这会有所帮助

答案 1 :(得分:0)

这种情况的解决方案不是创建一个列(作为计数器)并更新它,而是创建一个新表,用您需要的所有信息计算您想要的内容。

“WHERE id =”根本没有针对大型表进行优化。