在Postgres中,我如何为现有表添加索引?

3
在Postgres中,如何为现有表添加索引?
我尝试了以下操作,但没有起作用:
CREATE INDEX my_index ON my_table USING btree(a_column);

接下来是这个:

CREATE INDEX my_index ON my_table USING btree(a_column);
但是两者都不起作用。
我正在使用Ant进行数据库迁移。当我执行ant db-migrate-apply-postgresql时,始终会出现以下错误:
 [echo] ERROR:  relation "my_index" already exists

3
你那里的语法 应该 可以工作(两个相同的例子?)。否则,你需要包含错误信息来使这个问题有用。或者参考手册 - Erwin Brandstetter
我编辑以添加上下文并包含错误消息。 - user1467855
1
错误似乎很明显。尝试使用其他名称作为索引了吗? - madth3
1个回答

18

这个错误信息很明显:

ERROR: 关系"my_index"已经存在

你试图创建一个具有已存在索引或表名称的索引。你需要使用不同的名称。


5
据说你已经做到了。 - user330315
1
实际上,我正在尝试为三个不同的表添加索引。对于每个表,索引的名称都将是相同的,即"my_index"。但是Ant没有向任何表中添加索引。就像三个不同的表可以有名为id的字段一样,这应该不是一个问题。 - user1467855
7
索引名称和表名称一样,必须是唯一的。不能有三个相同名称的索引(就像不能有三个相同名称的表) 。 - user330315
11
没有哪个数据库会允许您使用相同的名称。索引在表格之外具有范围。列在表格内部具有范围。这就是为什么所有的表格都可以有一个相同名称的列的原因。 - Andrew T Finnell
@user1467855:养成在索引前加上表名的习惯,例如a_my_indexb_my_index等。 - Erwin Brandstetter
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接