¿MySQL indexa columnas de clave externa automáticamente?

Resuelto Dónal asked hace 16 años • 8 respuestas

¿MySQL indexa columnas de clave externa automáticamente?

Dónal avatar Nov 20 '08 11:11 Dónal
Aceptado

Sí, pero sólo eninnodb. Innodb es actualmente el único formato de tabla enviado que tiene claves externas implementadas.

Grant Limberg avatar Nov 20 '2008 04:11 Grant Limberg

Aparentemente se crea un índice automáticamente como se especifica en el enlace que Robert ha publicado .

InnoDB requiere índices de claves externas y claves referenciadas para que las comprobaciones de claves externas puedan ser rápidas y no requieran un escaneo de la tabla. En la tabla de referencia, debe haber un índice donde las columnas de clave externa se enumeran como las primeras columnas en el mismo orden. Un índice de este tipo se crea automáticamente en la tabla de referencia si no existe. (Esto contrasta con algunas versiones anteriores, en las que los índices tenían que crearse explícitamente o la creación de restricciones de clave externa fallaría). index_name, si se proporciona, se usa como se describió anteriormente.

Restricciones de InnoDB y FOREIGN KEY

 avatar Jul 17 '2009 19:07

Para aquellos que buscan cotizaciones de 5.7 documentos :

MySQL requiere índices de claves externas y claves referenciadas para que las comprobaciones de claves externas puedan ser rápidas y no requieran un escaneo de la tabla. En la tabla de referencia, debe haber un índice donde las columnas de clave externa se enumeran como las primeras columnas en el mismo orden. Un índice de este tipo se crea automáticamente en la tabla de referencia si no existe. Este índice podría eliminarse silenciosamente más adelante, si crea otro índice que pueda usarse para aplicar la restricción de clave externa. index_name, si se proporciona, se utiliza como se describió anteriormente.

Fahmi avatar Jul 25 '2017 08:07 Fahmi

No obtienes el índice automáticamente si haces ALTER TABLE (en lugar de CREATE TABLE), al menos según los documentos (el enlace es para 5.1 pero es el mismo para 5.5):

[...] Cuando agrega una restricción de clave externa a una tabla usando ALTER TABLE, recuerde crear primero los índices requeridos.

Thomas Lundström avatar Feb 08 '2013 08:02 Thomas Lundström