我写了一个更新整个表的查询。如何改进这个查询以减少时间:
update page_densities set density = round(density - 0.001, 2)
查询成功返回:628391行受影响,执行时间为1754179毫秒(29分钟)。
编辑:通过设置工作内存...
set work_mem = '500MB';
update page_densities set density = round(density - 0.001, 2)
查询成功返回:628391行受影响,执行时间为731711毫秒(12分钟)。
LOCK TABLE page_densities IN EXCLUSIVE MODE
命令,这个查询将运行得更快。您还可以考虑以下几点:a)禁用表上的所有触发器(如果有的话);b)在更新后删除所有索引并重新构建它们。 - Erich Kitzmueller