Olası sorun performanstır ve henüz bir performans sorununuz yoktur. Çözüm # 1'de bunu işlemek için seçtiğiniz veritabanına bağlı olarak yapabileceğiniz birçok şey vardır: dizinleme, donanım, önbellekleme, vb. Bu, kullanıcının geçerli bir okunmamış mesaj sayısını alması için ne sıklıkta ihtiyaç duyduğuna bağlıdır. Bu seçeneklerin çoğu uygulama tarafında özel kodlama gerektirmez, bu nedenle bunları bir kod değişikliği veya çok az bir uygulama ile uygulayabilirsiniz. Uygulaması ile büyümeyi kolaylaştırır.
Bir kullanıcı bağlandığında / oturum açtığında, sayıyı veritabanından bir kez almak o kadar da kötü değildir. Uygulamanız e-posta gibi mesajların sürekli güncellenen bir listesini tutacak mı? Buradan okunmamış bir sayı almak veritabanına başka bir gezi gerektirmez ve yeni mesajlar almak için yine de bir db gezisi alacaktır.
IsRead'i işaretlemek için her mesaj okunduğunda db'ye seyahat mi ediyorsunuz? alan, başka bir alanın yeniden hesaplanması olmadan yeterlidir.
Çözüm # 2 ile (bir alanda / diskte sayım tutmak), bir sorun olduğunda bu alanı periyodik olarak yeniden oluşturmak / yeniden hesaplamak için bir rutine ihtiyacınız olacak mı? Ve her zaman sorunlar var. Tüm bunları bir işlemde saracak mısınız? Birisi her birine bir ileti gönderdiğinde, kullanıcı tablosunun kilidi nedeniyle alıcı kullanıcının UnreadCount'unu güncelleyemediği için başarısız olabilir mi? Yoksa bu alan için ayrı bir tablo mu oluşturacaksınız?