Forudsat:
- Du bruger allerede en lagermaskine, der understøtter FK'er (f.eks. InnoDB)
- Du har allerede indekser på de involverede kolonner
Så vil jeg gætte på, at du får bedre ydeevne ved at lade MySQL håndhæve integritet. At håndhæve referentiel integritet er trods alt noget, som databasemotorer er optimeret til at gøre. At skrive din egen kode til at administrere integritet i Ruby vil være langsom i sammenligning.
Hvis du skal flytte fra MyISAM til InnoDB for at få FK-funktionaliteten, skal du overveje afvejningen i ydeevnen mellem de to motorer.
Hvis du ikke allerede har indekser, skal du beslutte, om du vil have dem. Generelt set, hvis du læser mere end skriver, vil du have (har endda brug for) indekserne.
At stable en FK oven på ting, der i øjeblikket er indekseret, burde forårsage et mindre overordnet præstationshit end at implementere den slags kontroller i din applikationskode.