所以我正在建立一个浪荡公子网站。用户可以根据自己的兴趣搜索其他用户。这只是用于搜索用户的许多参数的一部分。问题是有大约 100 种不同的兴趣。当搜索其他用户时,他们可以选择该用户必须分享的所有兴趣。虽然我可以想出方法来做到这一点,但我知道尽可能高效的搜索很重要。 后端使用jdbc连接mysql数据库。 Java是后端编程语言。 我曾争论过使用多个列来满足兴趣,但生成的问题是,如果这些列未在发送到服务器的 json 对象中解决,并告知其搜索条件,则 sql 查询不需要检查所有列。我还担心,如果我添加新列,我可能必须在稍后对表进行痛苦的修改。
我想到的另一件事是将某种长字节数组或数字(像字节数组一样使用)存储在单个列中。我可以用与用户正在搜索的兴趣相对应的另一个数字来表示,但我在某处读到,尽管这对我来说很有意义,但实际上效率很低:/
所有这些都必须是一个大型 SQL 查询的一部分,其中包含多个表。
我使用多列的问题之一是用于在可能有 40 列的数据上运行 statements.setBoolean 的编译能力。 我考虑过在客户端生成一个 xml 字符串,然后在 sql 查询中处理它。
有什么建议吗?
我认为正确的术语是位掩码。我可能可以有一个位掩码表,将用户 ID 映射到用于查询用户兴趣的位掩码,另一个表包含每个用户 ID 的每个兴趣的多个条目,以便在以后需要时有效地查找哪个用户具有哪些兴趣? p>
最佳答案
基本上,如果有一个包含所有兴趣的单独表(2 列:id
和 interest
),那就太好了。
然后,创建一个将用户链接到兴趣的表:user_interests
,其中包含以下列:id
、user_id
、interest_id
。在这里,了解一些有关多对多关系的知识会有很大帮助。
希望对您有所帮助!
关于mysql - sql 查询来检查许多兴趣是否匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41097252/