Masalah potensial adalah kinerja dan Anda belum memiliki masalah kinerja. Ada banyak hal yang dapat Anda lakukan tergantung pada database pilihan untuk menangani ini dalam solusi # 1: pengindeksan, perangkat keras, caching, dll. Ini semua tergantung pada seberapa sering pengguna perlu mendapatkan jumlah pesan yang belum dibaca saat ini. Banyak dari pilihan ini tidak memerlukan pengkodean khusus di sisi aplikasi, sehingga Anda dapat menerapkannya dengan perubahan kode atau sangat sedikit. Membuatnya lebih mudah untuk tumbuh dengan aplikasi.
Setelah pengguna menghubungkan / masuk, mendapatkan hitungan dari basis data tidak terlalu buruk. Apakah aplikasi Anda akan terus memperbarui daftar pesan seperti email? Mendapatkan hitungan yang belum dibaca dari sini tidak memerlukan perjalanan lain ke database dan untuk mendapatkan pesan baru akan tetap melakukan perjalanan db.
Melakukan perjalanan ke db setiap kali pesan dibaca untuk menandai IsRead? bidang sudah cukup tanpa perhitungan ulang bidang lain.
Dengan solusi # 2 (menyimpan hitungan dalam bidang / pada disk), akankah Anda memerlukan rutin untuk membangun kembali secara berkala / menghitung ulang bidang ini saat ada masalah? Dan selalu ada masalah. Apakah Anda akan membungkus semua ini dalam suatu transaksi? Setiap kali seseorang mengirim pesan kepada orang lain, pesan itu bisa gagal karena tidak dapat memperbarui UnreadCount pengguna penerima karena kunci tabel Pengguna? Atau Anda akan membuat tabel terpisah untuk bidang ini?