postgresql - Postgres : how to improve update performance for un-indexed columns?

标签 postgresql

在我的 PostgreSQL 9.3 数据库中,我有一个表“my_table”,它有 5 列:

col1、col2、col3、col4 和 col5

前两列(col1 和 col2)包含在唯一索引中,但其他 3 列没有任何索引。

此表与第 3 方实用程序一起使用,该实用程序按以下方式执行更新:

"update my_table set col3 = "some value"

where col1 = ...

and col2 = ...

and col3 = ...

and col4 = ...

and col5 = ..."

这些更新运行得非常慢,但我没有能力修改这个自动生成的 SQL。

我只能对表“my_table”进行更改。

要适应这种类型的更新查询并提高其性能,我能做的最好的事情是什么?

最佳答案

我刚刚测试了你描述的情况。正如 klin 所说,数据库最初使用唯一索引,而且速度非常快。但是如果你创建一个非唯一索引,覆盖所有搜索的列(col1 到 col5),这个索引将受到青睐。在 200 万行上测试,前 2 列是随机 ID,其余是低离散值。

因此,如果您不害怕更大的索引,请考虑添加一个将覆盖所有搜索列的索引。

关于postgresql - Postgres : how to improve update performance for un-indexed columns?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38986674/

相关文章:

algorithm - Postgres有向图上下遍历

postgresql - 如何通过 DirectFunctionCall 发送 NULL 参数?

sql - 使用 Postgresql 计算数学级数

c# - 当输出文件名中包含 UTF-8 字符时 pg_dump 失败

Postgresql json 类查询

sql - 为什么在 WINDOW FUNCTION 中使用 GROUP BY

python - 不区分大小写的数组查询 Flask-SQLAlchemy

mysql - 为什么 PostgreSQL 在 Windows 上这么慢?

python - 在不覆盖数据库的情况下推送到 Heroku

postgresql - 使用持久数据运行 postgresql docker 镜像返回权限错误