首先,我想澄清这个情景。
群发邮件系统有列表(电子邮件组),每个列表都有多个联系人(电子邮件)。联系人有一些状态,如正常,取消订阅,退回等。
我正在考虑设计这样的东西。
Table Contacts
-----------------------------------------
id email group_id contacts status
-----------------------------------------
状态将存储上述电子邮件ID状态。
但是一个列表可能有数千封电子邮件,因此如果客户端增加,则会导致数据检索导致性能问题
所以我得到了两个解决方案
为不同的联系人状态制作不同的表格,如
正常添加联系人的一个表 另一个未订阅的联系人。 等其他州
所以我的问题是对于上述情况哪个是更好的解决方案。 请指导我。
我打算将列表和联系人绑定在上面的表中的多对多关系中,仅用于描述问题。 提前致谢。
更新
查询从上表中检索信息
用于检索普通联系人
从联系人中选择*,其中group_id ='[group_id]'和状态= 1
未订阅的联系人
从联系人中选择*,其中group_id = [group_id]'和状态= 2 等等。
答案 0 :(得分:0)
对于您的评论,请在group_id
和status
即
create index my_index on contacts(group_id, status)
这将解决任何性能问题,因为数据库可以在不锁定表的情况下找到列表。
在扫描该列表时可能不会执行任何昂贵的操作(例如通过电子邮件发送)