更好的是,从通知 table 更新用户 table 或 SELECT 计数 (*) 的 notifications_count?

What is better, updating a notifications_count on a user table or SELECT count(*) from a notifications table?

我正在我的 rails 应用程序内部创建一个通知系统,我想知道什么会在规模上更好地工作。

我可以为用户创建一个名为 notifications_count 的列,每次创建新通知时 UPDATEUPDATE 每次查看通知时都会清除计数。

我还可以 运行 统计通知 table 并通过 user_id 和标志 unread.

对其进行过滤

通知将成为此应用程序的一项重要功能,并且此 table 的规模将增长得非常快,即使对于个人用户也是如此。

鉴于 table 最终将包含大量数据,哪种方法最好?

是否有其他扩展性更好的解决方案?

从关系建模的角度来看,拥有带有计数的额外列是多余的,因此很糟糕。

但是,它会以数据修改期间的额外工作为代价,使查询计数更快。

我会根据查询计数与数据修改的相对频率来做出决定。如果对计数的查询将成为您非常频繁的查询之一,我会为了性能而牺牲纯度。

该决定主要与数据库大小无关。