Praktik terbaik adalah selalu mulai dengan 3NF, lalu pertimbangkan denormalisasi hanya jika Anda menemukan masalah kinerja tertentu.
Performa hanyalah satu masalah yang harus Anda tangani dengan database. Dengan menduplikasi data, Anda berisiko membiarkan data yang tidak konsisten berada di database Anda, sehingga meniadakan salah satu prinsip inti database relasional, konsistensi (C
di ACID
) .
Ya, bergabung memiliki biaya, tidak ada jalan keluarnya. Namun, biayanya biasanya jauh lebih murah daripada yang Anda kira, dan sering kali dapat dibanjiri oleh faktor lain seperti waktu transmisi jaringan. Dengan memastikan kolom yang relevan diindeks dengan benar, Anda dapat menghindari banyak biaya tersebut.
Dan, ingat mantra pengoptimalan:ukur, jangan menebak! Dan ukur dalam lingkungan seperti produksi. Dan pertahankan pengukuran (dan penyetelan) secara berkala - pengoptimalan hanya satu set dan lupakan operasi jika skema dan data Anda tidak pernah berubah (sangat tidak mungkin).
Pengembalian kinerja biasanya dapat dibuat aman dengan menggunakan pemicu untuk menjaga konsistensi. Ini tentu saja akan memperlambat pembaruan Anda, tetapi mungkin tetap membuat pilihan Anda berjalan lebih cepat.