仮定:
- すでにFKをサポートするストレージエンジン(例:InnoDB)を使用しています
- 関連する列にすでにインデックスがあります
次に、MySQLに整合性を適用させることで、パフォーマンスが向上すると思います。結局のところ、参照整合性を強制することは、データベースエンジンが実行するように最適化されていることです。 Rubyで整合性を管理するための独自のコードを作成することは、比較すると遅くなります。
FK機能を取得するためにMyISAMからInnoDBに移行する必要がある場合は、2つのエンジン間のパフォーマンスのトレードオフを考慮する必要があります。
まだ指標がない場合は、それが必要かどうかを判断する必要があります。一般的に言って、書き込みよりも読み取りを多く行う場合は、インデックスが必要です(必要です)。
現在インデックスに登録されているものの上にFKをスタックすると、アプリケーションコードにこれらの種類のチェックを実装するよりも、全体的なパフォーマンスへの影響が少なくなります。