首页 文章

postgres:如何提高未索引列的更新性能?

提问于
浏览
1

在我的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”表进行更改 .

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

1 回答

  • 2

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

    因此,如果您不担心更大的索引,请考虑添加一个涵盖所有搜索列的索引 .

相关问题