2011-08-21 9 views
7

Estoy creando una aplicación de rails 3 en Heroku y está usando postgres como base de datos. En mi migración de rieles, agregué índices en todas las columnas de ID. ¿Fue esto un error? Estoy comenzando a preguntarme si Postgres tiene índices de forma predeterminada en las columnas de ID.Índices predeterminados en la columna de identificación?

Si fue un error, ¿cómo lo soluciono? Si simplemente escribo una migración de rieles para eliminar los índices de las columnas de ID, ¿corregirá eso todo?

Respuesta

9

Según postgresql's documentation:

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

Hovewer, esto no le impide crear otro índice en las mismas columnas. Puede tener sentido si utiliza alguna política de indexación diferente (por ejemplo, índice GiST). Pero, si no está seguro, el 99.9% acaba de crear un índice idéntico.

En realidad, esto no afectará la funcionalidad de la aplicación en absoluto. Lo único que debe preocuparse es que los índices se vuelvan a generar en las operaciones de actualización, por lo que podría plantear algunos problemas relacionados con el rendimiento. Entonces, como manual sugiere removing seldom-used indexes (última oración), será mejor que elimines esos índices de db.

No estoy muy familiarizado con las migraciones de RoR, pero creo que es suficiente con realizar una migración que elimine esos índices.

+0

Si ejecuto una consulta para eliminar el índice en el ID ¿eliminará "both"? – Brand

+0

No, la consulta para soltar un índice nombra el índice específico para descartar. Por lo tanto, drop index yada debería dar como resultado que solo se abandone el índice llamado yada. –

0

Compruebe con \ d "tablename" qué índices están presentes en su tabla. Todos ellos se enumeran allí, incluidos los creados automáticamente. Si encuentra duplicados, es bastante fácil eliminar uno (soltar el índice "indexname" en "tablename"). Solo eliminará el índice con el nombre correspondiente ...

Cuestiones relacionadas