2012-02-13 11 views
19

Actualmente estoy desarrollando en Oracle. Tengo varias tablas para las cuales definí restricciones FOREIGN KEY. Ya he leído esto SQL Server -orientado y esto MySQL -oriented preguntas pero no pude encontrar ninguno sobre Oracle.¿Oracle crea automáticamente un índice secundario para las columnas FOREIGN KEY?

Entonces, la pregunta es siempre la misma: para optimizar el rendimiento de la consulta, para aquellas columnas para las que creo una restricción FOREIGN KEY, ¿también tengo que crear un índice secundario explícito? ¿Oracle no crea automáticamente un índice en columnas FOREIGN KEYed para aumentar el rendimiento durante JOINs?

Normalmente realizo consultas en las que la cláusula WHERE se compara con esas columnas.

+1

No, no es así. Ver [esto] (http://stackoverflow.com/questions/4127206/do-i-need-to-create-indexes-on-foreign-keys), por ejemplo. –

Respuesta

18

No, Oracle no crea automáticamente índices en columnas de clave externa, aunque en el 99% de los casos debería hacerlo. Además de ayudar con las consultas, el índice también mejora el rendimiento de las instrucciones de eliminación en la tabla principal.

+1

Sin embargo, dichos índices tienen un costo de mantenimiento, y hay momentos en los que es mejor no crearlos. Personalmente, sospecho que debería crearlos de manera predeterminada y dejarlos soltar si lo desea, pero Oracle está lejos de ser el único DB que se comporta como lo hace. PostgreSQL tampoco crea automáticamente índices para el lado de referencia de una relación de clave externa. –

Cuestiones relacionadas