OM *_*ity 7 mysql triggers join database-performance
我正在开发一个基于PHP,Mysql,Apache的项目.
我有一个名为notification的模块,就像FACEBOOK中的Notification一样,为此我有3种方法
或者我将每个更新插入一个表,在需要通知这些更新的用户数中,即如果假设类别B有一些更新,并且此类别B包含100个用户,那么我将为相应的用户插入100行一个说法,通知表.
第二种方式
我可以做的只是在表中插入一个特定的类别条目,然后在每个这些Caregory ID上提交一个重的JOIN查询来获取多个表中的所有记录以获取记录.
第三种方式
我在每次更新时使用触发器,以便它可以用于通知用户.
我相信这三种方式在某些方面都存在问题.
现在任何人都可以建议任何更好的想法或哪一个是更好的选择?
我担心网站的性能,因为它将有批量条目
谢谢
这比我最初想到的要棘手一些:)
\n\n应用程序/用户行为如何?我们什么时候应该做大部分工作?是在插入数据的时候,还是在我们取数据的时候。
\n\n我必须对最常见的操作做出假设。我认为获取数据会更常见一些,因为许多用户会看到未读消息的通知,但只有一个新消息的“插入”?
\n\n因此,我会将工作放在插入新通知上,但当用户开始涌向您的应用程序时,结果仍然可能很糟糕。
\n\n但我认为模型需要在任何优化之前设置,这更重要。稍后可以通过使用非规范化、调度等来管理优化。我不会真正接触触发器,恕我直言,它们有点时髦。
\n\n我还将采取另一种方法。
\n\n用户写一条新消息:
\n\n更新当时更新的 user_category (有很多)类别
\n\nUPDATE user_category SET last_changed = \'NOW()\' 其中category_id = ?;
如何查找用户未读消息:
\n\n用户已阅读消息
\n\n在从该类别读取的所有消息上\n - 使用用户阅读所有消息的日期更新 *user_category\xe2\x84\xa2 (有很多)。
\n\n但有时,你无法真正摆脱实际工作。
\n