mysql - 在数据库/MySQL 中存储邮件列表

标签 mysql sql database

我有包含数百万条记录(行)的表格。 而在这个表中,表中有一列叫做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,比如 User Email Data 第三个表存储连接信息。

但是,我不确定它是否会给我任何改进,因为每次我查询时都会有 2 个连接。

任何人都可以建议一种更好的方法来存储此邮件列表/帮助我评估两者中哪个更好。任何帮助将不胜感激。

谢谢

最佳答案

虽然这违反了 3NF,但您可以存储这两种变体。但如果您追求速度 - 一些非规范化可能会有所帮助。

您可以使用旧的串联邮件列表进行某些处理,并使用新的多表模式进行快速搜索。

关于mysql - 在数据库/MySQL 中存储邮件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9108062/

相关文章:

php - 在mysql查询中发布变量

php - SQL+CI : How to join multiple rows?

MySQL 检查逗号分隔值是否与表中的行匹配

c# - 通过单一方法但使用多个查询的数据库连接

mysql - SQL Join 条件优化

java.sql.SQLException : Illegal hour value '50' for java. sql.Time 类型的值 '50:51:05

python - - 在Python中通过MySQL的计数找到top x?

mysql - 组合两个 SQL 语句,其中在多对多关系中两者都必须为 true

mysql - 为什么我无法获取某个日期范围内的记录?

sql-server - 如何在开发时使用 .mdf