Ruby on rails 3 id列上的默认索引?

Ruby on rails 3 id列上的默认索引?,ruby-on-rails-3,postgresql,heroku,Ruby On Rails 3,Postgresql,Heroku,我正在Heroku上创建一个rails 3应用程序,它使用postgres作为数据库。在我的rails迁移中,我在所有ID列上添加了索引。这是个错误吗?我开始怀疑postgres是否默认在ID列上有索引 如果这是一个错误,我该如何修复它?如果我只是编写一个rails迁移来删除ID列中的索引,那么这会修复所有问题吗?根据: Hovewer,这不会阻止您在同一列上创建另一个索引。如果您使用一些不同的索引策略(例如GiST索引),这可能是有意义的。但是,如果你不确定,99.9%的人认为你刚刚创建了相同

我正在Heroku上创建一个rails 3应用程序,它使用postgres作为数据库。在我的rails迁移中,我在所有ID列上添加了索引。这是个错误吗?我开始怀疑postgres是否默认在ID列上有索引

如果这是一个错误,我该如何修复它?如果我只是编写一个rails迁移来删除ID列中的索引,那么这会修复所有问题吗?

根据:

Hovewer,这不会阻止您在同一列上创建另一个索引。如果您使用一些不同的索引策略(例如GiST索引),这可能是有意义的。但是,如果你不确定,99.9%的人认为你刚刚创建了相同的索引

实际上,这根本不会影响应用程序的功能。唯一需要注意的是,索引是在更新操作上重建的,因此可能会带来一些与性能相关的问题。所以,正如手册(最后一句)所建议的,最好从数据库中删除这些索引


我不太熟悉RoR迁移,但我认为编写一个删除这些索引的迁移就足够了。

用“tablename”检查表中存在哪些索引。所有这些都列在那里,包括自动创建的。如果发现重复项,则很容易删除一个(将索引“indexname”放在“tablename”上)。您将仅删除具有相应名称的索引

如果我运行一个查询来删除ID上的索引,它是否会删除“两者”?否,删除索引的查询将指定要删除的特定索引。因此,删除索引yada应该只删除名为yada的索引。
Adding a primary key will automatically create a unique btree index on the column
or group of columns used in the primary key.