Giả sử:
- Bạn đang sử dụng công cụ lưu trữ hỗ trợ FK (tức là:InnoDB)
- Bạn đã có chỉ mục trên các cột liên quan
Sau đó, tôi đoán rằng bạn sẽ nhận được hiệu suất tốt hơn bằng cách để MySQL thực thi tính toàn vẹn. Thực thi tính toàn vẹn tham chiếu, xét cho cùng, là điều mà các công cụ cơ sở dữ liệu được tối ưu hóa để thực hiện. So sánh với việc viết mã của riêng bạn để quản lý tính toàn vẹn trong Ruby sẽ rất chậm.
Nếu bạn cần chuyển từ MyISAM sang InnoDB để có được chức năng FK, bạn cần cân nhắc sự cân bằng về hiệu suất giữa hai công cụ.
Nếu bạn chưa có chỉ dẫn, bạn cần quyết định xem bạn có muốn chúng hay không. Nói chung, nếu bạn đọc nhiều hơn viết, bạn cần (thậm chí) các chỉ dẫn.
Xếp FK lên trên những thứ hiện được lập chỉ mục sẽ ít gây ra hiệu suất tổng thể hơn so với việc triển khai các loại kiểm tra đó trong mã ứng dụng của bạn.