比如表A是城市表,有世界上所有城市,B1是人名,A1和B1都有几万到几十万条数据。李四去过北京,东京,纽约就记录下来。现在我们想知道谁没去过北京,用的 not like '%[1]%'的方式,我觉得这样设计是不对的,而且因为查询频繁,CPU占用非常高,但是没有好的思路。考虑过新建一个表,存放姓名和城市,一行一个,每个人去过一个地方就增加一行记录,这样的话,当有20万人,5万人去过北京,查询没去过北京的好像效率也很低。主要是查询太过频繁。
ID | city |
---|---|
1 | 北京 |
2 | 东京 |
3 | 纽约 |
4 | 伦敦 |
name |
list_id |
李四 | [1],[2],[3] |
张三 | [1] |
王五 | [4],[1] |
赵一 | [3],[1],[2] |