我必须编写一个迁移命令才能从索引中删除一列。目前,让我们说我有table1
的索引位于col1 and col2
我想从索引中删除col1
。我正在查看https://www.postgresql.org/docs/9.4/static/sql-alterindex.html,但似乎实际上不能删除列吗?
如果是,最好删除列以及如何删除VS
此外,如果需要降级,我想做相反的事情。所以想知道如何实现
答案 0 :(得分:1)
不存在更改索引的功能,因为要这样做,您将必须使用新列销毁并重新创建索引。默认情况下,Postgres使用B树来创建索引,并且删除列会导致B树变为无效。结果,需要从头开始构建B树。
如果您想了解有关索引如何工作的更多详细信息,这是一篇不错的文章:Postgres Indices Under the Hood
答案 1 :(得分:0)
您是对的,您将不得不用一个列创建一个新索引,然后删除一个包含两列的旧索引。