id列的默认索引?

Bra*_*and 7 postgresql heroku ruby-on-rails-3

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

如果这是一个错误,我该如何解决?如果我只是编写一个rails迁移来删除ID列中的索引将修复所有内容?

J0H*_*0HN 9

根据postgresql的文档:

Adding a primary key will automatically create a unique btree index on the column
or group of columns used in the primary key.
Run Code Online (Sandbox Code Playgroud)

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

实际上,这根本不会影响应用程序功能.唯一需要关注的是索引是在更新操作上重建的,因此可能会引发一些与性能相关的问题.因此,正如手动建议删除很少使用的索引(最后一句),您最好从db中删除这些索引.

我不太熟悉RoR迁移,但我认为通过迁移删除这些索引就足够了.