好吧,我伟大的朋友们,我再一次在你们的肩膀上寻找一点空间:p
这里有个问题,我有一个Python脚本,它正在修复一些数据库问题,但是它花费的时间太长了,主要的更新语句是:

cursor.execute("UPDATE jiveuser SET username = '%s' WHERE userid = %d" % (newName,userId))

有9500次不同的newname和userid对被调用…
对如何加快这一进程有什么建议吗?也许有一种方法可以让我只用一个查询就完成所有更新?
任何帮助都将不胜感激!
附言:postgres是正在使用的数据库。

最佳答案

将所有数据插入另一个空表(例如,称为userchanges),然后在单个批处理中更新:

UPDATE jiveuser
SET username = userchanges.username
FROM userchanges
WHERE userchanges.userid = jiveuser.userid
    AND userchanges.username <> jiveuser.username

有关批量加载数据的信息,请参阅the COPY command上的本文档。
也有tips for improving performance when populating a database

08-25 02:50