0

我想提高通知板的速度。它从event表中检索数据。此时eventsMySQL 表看起来像这样

id | event_type | who_added_id | date

event表中,我存储了一行,其中包含有关特定事件的信息。每次用户 A 请求新的通知时,查询都会遍历表并查看用户 B 添加的通知是否适合他(他们必须是朋友,同一组的成员,以前聊天过)。表events变大了,因为查询量很大,页面加载速度很慢。我正在考虑完全改变这种设计,而不是添加一个事件行然后比较用户的事件是否适合,而是添加与感兴趣的用户一样多的行。我会改变表events结构如下:

id | event_type | who_added_id | forwho_id | date

现在,如果用户 B 创建了一个让其他 50 名成员感兴趣的事件,我创建了 50 行具有相同信息的行,并且在“forwho_id”字段中我提到了必须收到此通知的那 50 名成员。我认为查询将变得更加简单,并且搜索它所需的时间会更少。您如何看待: 1. 这是存储此类数据的好方法还是我们应该不惜一切代价避免重复数据?events2.如果感兴趣的用户数量不是 50 而是数百,您认为该表会如何表现?

感谢您阅读本文,我希望我能理解自己。

4

1 回答 1

0

重复数据并不是“坏事”,也不是“不惜一切代价避免”。

“坏”是不受控制的冗余,以及当逻辑数据模型不是第三范式时出现的那种问题。实现将偏离逻辑数据模型并引入冗余以提高性能是可以接受的并且可以预期。

您修改后的设计看起来适合您的需求。

于 2013-01-27T00:55:39.153 回答