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