Solo para más información: Oracle no crea un índice automáticamente (como lo hace para las restricciones únicas) porque (a) no es necesario para aplicar la restricción, y (b) en algunos casos no es necesario uno.
La mayoría de las veces, sin embargo, querrá crear un índice (de hecho, en Oracle Apex hay un informe de "claves externas no indexadas").
Cuando la aplicación necesita poder eliminar una fila en la tabla padre, o actualizar el valor PK (que es más raro), el DML sufrirá si no existe un índice, porque tendrá que bloquear toda la tabla secundaria .
Un caso en el que normalmente elegir no para añadir un índice es donde el FK es una tabla "datos estáticos" que define el dominio de una columna (por ejemplo, una tabla de códigos de estado), donde las actualizaciones y elimina en la tabla padre nunca se realiza directamente por la aplicación. Sin embargo, si al agregar un índice en la columna se obtienen beneficios para consultas importantes en la aplicación, el índice seguirá siendo una buena idea.
En algunas bases de datos creando una restricción de clave externa también crea un índice ... es decir, motor Jet (archivos MSAccess, Firebird y MySQL) – bubi
Esta respuesta no tiene sentido sin referirse explícitamente a una implementación particular de la base de datos. Claro que la pregunta está etiquetada 'oráculo' pero eso no es inmediatamente obvio cuando aterrizas aquí desde una búsqueda en google. – developerbmw
Puedo confirmar que PostgreSQL, al menos en el momento de esta publicación, no lo hace automáticamente. –