我正在基于PHP,Mysql和Apache的项目上工作。
我有一个称为通知的模块,就像FACEBOOK中可用的通知一样,为此,我有3种方法
任何一个
我将每个更新插入到一个表中,其中包含需要通知这些更新的用户数量,即如果假设类别B有一些更新,并且此类别B包含100个用户,则我将为每个用户插入100行例如,通知表。
第二路
我所能做的就是在表中插入一个特定类别条目,然后对每个护理ID进行繁重的JOIN查询,以从多个表中获取所有记录以获取记录。
第三路
我在每次更新时都使用触发器,以便可以将其用于通知用户。
我相信这三种方式在某些时候都是有问题的。
现在,有谁能提出更好的主意,或者是更好的选择之一?
我担心网站的性能,因为它将有大量条目
谢谢
最佳答案
那有点棘手,然后我首先想到了:)
应用程序/用户行为如何?我们什么时候应该做大部分工作?是在插入数据时还是在获取数据时。
我将对最常见的操作进行假设。我认为获取数据会更加普遍,因为许多用户会看到未读消息的通知,但是只有一次“插入”一条新消息?
因此,我会把工作放在插入新的通知上,但是当用户开始涌向您的应用时,它仍然可能以糟糕的结果结束。
但是我认为必须在进行任何优化之前设置模型,这一点更为重要。以后可以使用denormalisation,调度等来管理优化。我不会真正接触触发器,它们有点时髦,恕我直言。
我还将提出另一种方法。
用户写了一条新消息:
更新user_category SET last_changed ='NOW()'其中category_id =?;
如何查找用户未读邮件:
在用户已读消息
在从该类别中读取的所有邮件中
-用用户已阅读所有消息的日期更新* user_category™(有很多)。
但是有时候,您无法真正摆脱实际工作。
关于mysql - 选择一种方法而不是另一种方法从Mysql提取数据的复杂性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7006471/