Aumente el rendimiento con la compatibilidad con índices de claves externas de Oracle.

    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:

    List of table constraints including columns showing index support for constraint

    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:

    Sample SQL query that uses an index

    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:

    Explain plan dialog showing index support

    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:

    Context menu to drop an index

    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:

    Constraint list shows no index support after index has been dropped

    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.

    Explain plan dialog shows increased CPU after index has been dropped

    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:

    "Create index on FK columns" context menu item

    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:

    Modal dialog to create an index

    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.