Publicado 08. junio 2016
Actualizado en octubre de 2025
Introducción
La compatibilidad con índices de claves externas de Oracle garantiza que cada columna de clave externa tenga un índice correspondiente. Aunque no es obligatorio, disponer de dicho índice mejora significativamente el rendimiento. Afortunadamente, Hora facilita la detección de índices que faltan y su creación con solo unos clics.
Aquí hemos clonado el esquema HR en HR1 para demostrar cómo funciona. Hay una restricción de clave externa que requiere que cada job_id de la tabla EMPLOYEES coincida con una clave principal de la tabla JOBS. Está respaldada por el índice EMP_JOB_IX:

Lista de restricciones de tabla, incluidas las columnas que muestran el soporte de índice para la restricción
Este índice ayuda a optimizar consultas como la siguiente:

Ejemplo de consulta SQL que utiliza un índice
Como se muestra en el plan explicativo, el índice se utiliza para filtrar de manera eficiente las filas SA_REP:

Cuadro de diálogo Explain Plan que muestra la compatibilidad con índices
¿Qué ocurre sin el índice?
Ahora veamos qué ocurre si eliminamos este índice y volvemos a ejecutar la consulta:

Menú contextual para eliminar un índice
Después de eliminar el índice, la restricción no muestra nada en «Compatibilidad con índices» en la pestaña Restricciones de Hora:

La lista de restricciones no muestra soporte de índice después de eliminar el índice
Cuando volvemos a ejecutar la consulta, el cuadro de diálogo Explain Plan muestra un aumento significativo del coste de CPU, lo que demuestra claramente el impacto de la falta del índice.

El cuadro de diálogo Explain Plan muestra un aumento de la CPU después de eliminar el índice
Por qué son importantes los índices de claves externas
Otra razón importante para mantener los índices en las columnas de claves externas es evitar bloqueos completos de la tabla secundaria cada vez que se actualiza o elimina la clave principal de la tabla principal.
Sin un índice, Oracle debe bloquear toda la tabla secundaria para mantener la integridad referencial, lo que puede bloquear las transacciones simultáneas.
Para obtener una explicación conceptual detallada utilizando las tablas HR.DEPARTMENTS y HR.EMPLOYEES, consulte el Manual de conceptos de Oracle.
Cómo le ayuda Hora a solucionarlo
Si se encuentra con una restricción de clave externa que no es compatible con un índice, Hora le facilita la corrección del problema.
Solo tiene que abrir la pestaña Restricciones, hacer clic con el botón derecho del ratón en la restricción y seleccionar «Crear índice en columnas FK» en el menú contextual:

Elemento del menú contextual «Crear índice en columnas FK»
El cuadro de diálogo rellena automáticamente los detalles relevantes para la restricción seleccionada, lo que le ahorra tiempo y esfuerzo:

Cuadro de diálogo modal para crear un índice
Incluso puede sustituir el nombre de índice sugerido, como EMP_JOB_FK_IDX, por el nombre original proporcionado por Oracle (EMP_JOB_IX) antes de continuar.
Este flujo de trabajo fluido garantiza que sus claves externas estén totalmente optimizadas sin necesidad de escribir scripts SQL manualmente.
Esperamos que esté de acuerdo en que la compatibilidad con índices de claves externas es un pequeño paso que ofrece grandes ventajas en cuanto al rendimiento, y que Hora facilita su gestión.
➡️ Pruebe KeepTool gratis
Las herramientas Oracle de KeepTool están diseñadas específicamente para desarrolladores, administradores de bases de datos (DBA) y equipos de soporte. Con más de 25 años de experiencia, optimizamos continuamente nuestro software para que el análisis y la documentación de sus bases de datos sean más rápidos, eficientes y claros.