python - 数据库查询优化

标签 python database postgresql query-optimization

好吧,我的巨人 friend 们,我再次在你们的肩膀上寻找一点空间 :P

这就是问题所在,我有一个 python 脚本正在修复一些数据库问题,但它花费的时间太长了,主要的更新语句是这样的:

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

用不同的 newName 和 userid 对调用了大约 9500 次...

关于如何加快这个过程有什么建议吗?也许我可以通过某种方式通过一个查询完成所有更新?

任何帮助将不胜感激!

PS: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 .

关于python - 数据库查询优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2968451/

相关文章:

javascript - 这个 JavaScript "require"是什么?

ruby-on-rails - 表上的插入或更新违反了外键约束(错误)

database - 保持许多远程数据库与主数据库同步的 DBA 功能/工具是什么

python - 使用 Factory Boy 进行 Django 测试时出错

php - 从选择选项到多个复选框

python - 混淆矩阵实际值每K轮更改一次

sql - SQL Server 中的 For 循环和 if else 语句

postgresql - 如何在 JOOQ 中为 PostgreSQL 编写正确的 bool 比较

python - numpy:搜索数组中的第一个和最后一个索引

python - 链接的 popen 进程未获得输出