作为一种粗略的猜测优化方法,我工作中的开瓶器(几年前)将我们的comments
表中的body
列移至次表comment_extensions
表中。每次我们想要显示评论时,加入一个加入似乎都不明智,所以我会尝试将该列移回到我们的comments
表中并运行一些基准测试。PostgreSQL:什么是更新3m记录的有效方法?
我的问题是此更新抓取。我让它跑了一个小时,然后关掉它,担心这会花一整晚。
UPDATE comments SET body = comment_extensions.body
FROM comment_extensions
WHERE comments.id = comment_extensions.comment_id;
这是一个PostgreSQL 8.1数据库,并且comment_extensions.comment_id
被索引。
任何建议让这个运行更快?
每当我们显示评论时,我们都需要在评论文本的'comment_extensions'表中对应的记录。所以这是100%的时间。似乎没有必要在两张桌子上应该有一张桌子。 感谢您对小批量的建议。如果我们这样做的话,我们可以在迁移过程中保持网站的流畅。 – user57995 2009-08-19 18:15:16
是的,这听起来像一个负面的“优化”。检查主表中的注释字段。如果主表的注释为空,请在扩展表中检查注释。将所有新注释插入主表中。这将保持你的网站,直到你准备好转储扩展表。小批量更新(取决于您的站点的负载,10k可能太多)会让系统在后台进行迁移时执行其生产工作。 – 2009-08-19 20:01:36