Индексы по умолчанию для столбца id? - PullRequest
7 голосов
/ 21 августа 2011

Я создаю приложение rails 3 для Heroku, и оно использует postgres в качестве базы данных. В моей миграции рельсов я добавил индексы для всех столбцов идентификаторов. Было ли это ошибкой? Я начинаю задумываться, есть ли у postgres индексы по умолчанию для столбцов идентификаторов.

Если это была ошибка, как я могу это исправить? Если я просто напишу миграцию rails для удаления индексов из столбцов ID, это все исправит?

Ответы [ 2 ]

9 голосов
/ 21 августа 2011

Согласно документации postgresql :

Adding a primary key will automatically create a unique btree index on the column
or group of columns used in the primary key.

Однако, это не мешает вам создавать другой индекс для тех же столбцов. Это может иметь смысл, если вы используете другую политику индексации (например, индекс GiST). Но, если вы не уверены в этом, 99,9%, что вы только что создали идентичный индекс.

На самом деле, это никак не повлияет на функциональность приложения. Единственное, на что следует обратить внимание, это то, что индексы перестраиваются при операциях обновления, поэтому могут возникнуть некоторые проблемы, связанные с производительностью. Итак, как руководство предлагает удалить редко используемые индексы (последнее предложение), вам лучше удалить эти индексы из базы данных.

Я не совсем знаком с миграциями RoR, но думаю, что достаточно перенести миграцию, удаляющую эти индексы.

0 голосов
/ 22 августа 2011

Проверьте с \ d "tablename", какие индексы присутствуют в вашей таблице. Все они перечислены там, в том числе автоматически созданные. Если вы найдете дубликаты, их достаточно легко удалить (сбросьте индекс "indexname" на "tablename"). Вы удаляете только индекс с соответствующим именем ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...