Sejujurnya, tidak hanya Anda tidak akan melihat banyak kehilangan kinerja karena memiliki kendala kunci asing dalam database, tetapi Anda akan melihat peningkatan kinerja. Pengoptimal permintaan SQL Server dibangun di sekitar konsep kunci primer dan foriegn serta jenis kendala data lainnya. Jika ini ada dan diberlakukan, pengoptimal dapat memanfaatkannya untuk membuat Anda mendapatkan kinerja yang lebih baik. Berikut adalah posting blog dengan contoh sederhana yang menunjukkannya dalam tindakan.
Jika Anda berada dalam kasus tepi di mana Anda benar-benar memiliki lebih banyak sisipan daripada bacaan (dan pembaruan & penghapusan membutuhkan bacaan, sehingga biasanya berakhir dengan menambah jumlah baca), maka mungkin masuk akal untuk menghilangkan kendala dari data untuk kinerja, mungkin . Tetapi karena sebagian besar basis data berorientasi pada baca, Anda mengorbankan kinerja, bukan meningkatkannya.
Dan tidak satu pun dari ini menyebutkan fakta bahwa integritas data lebih baik ditangani di database karena Anda hanya perlu membuatnya sekali ketika seolah-olah Anda melakukan semua pekerjaan dalam kode, Anda mungkin harus melakukannya berkali-kali untuk beberapa aplikasi (kecuali jika Anda mendesain lapisan akses data Anda dengan hati-hati dan mengharuskan setiap aplikasi mengakses db untuk melewati lapisan yang sama).
Jika Anda menggunakan sistem basis data relasional, saya katakan, mengapa tidak benar-benar menggunakannya. Jika Anda tidak memerlukan data relasional, pergilah dengan Hadoop atau yang lainnya.