我有两个表,用户(约1000个用户)和国家(约50个国家)。一个用户可以支持许多国家,所以我计划创建一个映射表,user_country。但是,由于我有1000个用户和50个国家,我将最多有50000个条目。这是实现这一点的最佳方法还是有更合适的方法?
如果这是最好的方法,那么如何使用一个sql语句将支持多个国家/地区的用户添加到此表中?
例如:

INSERT INTO user_country(userid, countrycode)
VALUES ('user001','US'),
('user001','PH'),
('user001','KR'),
('user001','JP')

如果用户支持所有50个国家,则上面的SQL语句将太长。我必须为1000个用户做这件事。有没有人知道最有效的方法来实现这一点?

最佳答案

就我个人而言,我会根据以下选择进行插入:

INSERT INTO user_country SELECT 'user001', countryid from countries WHERE countryid IN ('US', 'PH', 'KR', 'JP');

你需要适应你的列名。
也可以选择将国家列表存储在一列usercountries varchar (255)中,例如us、fr、kr等等,但是您将失去根据支持的国家选择用户的能力。事实上你不会失去它-但是
SELECT * FROM users WHERE usercountries like '%KR%';

在索引使用方面不是一个好的查询。但是由于您只有1000个用户,所以一个表也非常快。

07-27 23:46