En supposant :
- Vous utilisez déjà un moteur de stockage qui prend en charge les FK (par exemple :InnoDB)
- Vous avez déjà des index sur les colonnes concernées
Ensuite, je suppose que vous obtiendrez de meilleures performances en faisant en sorte que MySQL applique l'intégrité. L'application de l'intégrité référentielle est, après tout, quelque chose pour laquelle les moteurs de base de données sont optimisés. Écrire votre propre code pour gérer l'intégrité dans Ruby va être lent en comparaison.
Si vous devez passer de MyISAM à InnoDB pour obtenir la fonctionnalité FK, vous devez tenir compte des compromis de performances entre les deux moteurs.
Si vous n'avez pas encore d'indices, vous devez décider si vous en voulez. De manière générale, si vous faites plus de lectures que d'écritures, vous voulez (même besoin) les indices.
L'empilement d'un FK sur des éléments actuellement indexés devrait entraîner moins d'impact sur les performances globales que l'implémentation de ces types de vérifications dans votre code d'application.