Postgres更改索引vs删除索引并创建索引

时间:2018-07-27 18:20:23

标签: postgresql goose

我必须编写一个迁移命令才能从索引中删除一列。目前,让我们说我有table1的索引位于col1 and col2

我想从索引中删除col1。我正在查看https://www.postgresql.org/docs/9.4/static/sql-alterindex.html,但似乎实际上不能删除列吗?

如果是,最好删除列以及如何删除VS

  • 创建新索引
  • 删除旧索引

此外,如果需要降级,我想做相反的事情。所以想知道如何实现

2 个答案:

答案 0 :(得分:1)

不存在更改索引的功能,因为要这样做,您将必须使用新列销毁并重新创建索引。默认情况下,Postgres使用B树来创建索引,并且删除列会导致B树变为无效。结果,需要从头开始构建B树。

如果您想了解有关索引如何工作的更多详细信息,这是一篇不错的文章:Postgres Indices Under the Hood

答案 1 :(得分:0)

您是对的,您将不得不用一个列创建一个新索引,然后删除一个包含两列的旧索引。