Dengan asumsi:
- Anda sudah menggunakan mesin penyimpanan yang mendukung FK (yaitu:InnoDB)
- Anda sudah memiliki indeks pada kolom yang terlibat
Maka saya kira Anda akan mendapatkan kinerja yang lebih baik dengan meminta MySQL menegakkan integritas. Menegakkan integritas referensial, bagaimanapun, adalah sesuatu yang dioptimalkan untuk dilakukan oleh mesin database. Menulis kode Anda sendiri untuk mengelola integritas di Ruby akan lebih lambat dibandingkan.
Jika Anda perlu berpindah dari MyISAM ke InnoDB untuk mendapatkan fungsionalitas FK, Anda perlu mempertimbangkan pengorbanan dalam kinerja antara kedua mesin tersebut.
Jika Anda belum memiliki indeks, Anda perlu memutuskan apakah Anda menginginkannya. Secara umum, jika Anda melakukan lebih banyak membaca daripada menulis, Anda menginginkan (membutuhkan, bahkan) indeks.
Penumpukan FK di atas hal-hal yang saat ini diindeks seharusnya menghasilkan lebih sedikit kinerja keseluruhan daripada menerapkan jenis pemeriksaan tersebut dalam kode aplikasi Anda.