【发布时间】:2017-11-02 08:20:48
【问题描述】:
我在 postgres 中有一个非常简单的 sql update 语句。
UPDATE p2sa.observation SET file_path = replace(file_path, 'path/sps', 'newpath/p2s')
观察表有 1513128 行。到目前为止,查询已经运行了大约 18 个小时,还看不到尽头。
file_path 列未编入索引,因此我猜它正在执行从上到下的扫描,但时间似乎有点过长。可能替换也是一个缓慢的操作。
是否有一些替代或更好的方法来进行这种影响所有行的一次性更新。它本质上是将旧文件路径更新到新位置。它只需要更新一次或将来可能再次更新。
谢谢。
【问题讨论】:
-
这似乎真的很长一段时间。你查过是不是waiting for a lock?
-
每一行都有'path/sps'吗?如果没有,您可以添加一个 where file_path 像 '%path/sps%'。
标签: sql postgresql performance sql-update