我有数百万条记录(行)的表。 在此表中,表中有一列名为mail_to。 对应于每个记录,有一个邮件列表,然后邮件列表的信息存储在此列mail_to中。 在我系统的当前实现中,我将邮件列表存储为逗号分隔的邮件ID列表。
例如 考虑一个表订阅数据
| Column A | Column B |........ | mail_to |
| Record 1 | abc | | xyz@gmail.com,abc@gmail.com |
如果我想检索与记录对应的邮件列表,则当前实现可以正常工作。但是如果我想搜索对应于abc@gmail.com的记录,查询就太慢了。
我能想到的一种方式是
在订阅数据中将A列存储到N列 然后将邮件ID放在单独的表中,说用户电子邮件数据 以及存储连接信息的第三个表。
但是,我不确定它是否会给我任何改进,因为每次我会查询时会有2个连接。
任何人都可以建议一个更好的方式来存储这个邮件列表/帮我评估两者中哪个更好。任何帮助将不胜感激。
由于
答案 0 :(得分:0)
您可以存储这两种变体,但它违反了3NF。但如果你在寻找速度 - 一些非规范化可能有所帮助。
您可以使用旧的连续邮件列表进行处理,并使用新的多表架构进行快速搜索。
答案 1 :(得分:0)
首先关闭
您当前的设计违反了规范化的第一条规则:没有重复的群体。
如你所知,你应该有这样的东西(UQ =唯一)
<强>订阅强>
<强> USEREMAIL 强>