sql >> Base de Datos >  >> RDS >> Mysql

¿La introducción de claves foráneas en MySQL reduce el rendimiento?

Suponiendo:

  1. Ya está utilizando un motor de almacenamiento compatible con FK (es decir, InnoDB)
  2. Ya tiene índices en las columnas involucradas

Entonces supongo que obtendrá un mejor rendimiento al hacer que MySQL haga cumplir la integridad. Hacer cumplir la integridad referencial es, después de todo, algo para lo que los motores de base de datos están optimizados. Escribir su propio código para administrar la integridad en Ruby será lento en comparación.

Si necesita pasar de MyISAM a InnoDB para obtener la funcionalidad FK, debe considerar las compensaciones en el rendimiento entre los dos motores.

Si aún no tiene índices, debe decidir si los quiere. En términos generales, si está haciendo más lecturas que escrituras, desea (necesita, incluso) los índices.

Apilar un FK encima de cosas que actualmente están indexadas debería causar menos impacto en el rendimiento general que implementar ese tipo de comprobaciones en el código de su aplicación.