在MySQL中存储多个ID以查询大型结果集的最佳方法

时间:2015-10-03 00:35:45

标签: php mysql

我想保存客户订阅的电子邮件列表。我可能有:

email_lists:

ID    Name
1     Coupons
2     Monthly Newsletter
3     Company News

现在,用户可以根据需要订阅任意数量的列表。所以假设我有三个用户:

用户:

ID    Name    Lists
1     Bob     1,3
2     Jane    2,3
3     Tom     1

现在我需要进行查询以获取订阅列表#1的所有用户ID:

SELECT ID FROM users WHERE Lists LIKE '%1%'

是否有更好的方法为每个用户存储列表ID,以便更有效地执行查询?

1 个答案:

答案 0 :(得分:1)

第三个表格subscrib将是最好的:

UserId    ListId
1         1      // Bob, Coupons
1         3      // Bob, Company news
2         2      // Jane, Monthly Newsletter
2         3      // Jane, Company news
3         1      // Tom, Coupons

然后你的查询就像(Company news}:

SELECT UserId FROM subscrib WHERE ListId = '3';

SELECT s.ListId, u.Email, u.Name FROM subscrib s
LEFT OUTER JOIN users u ON u.ID = s.UserId
WHERE s.ListId = '3';