用于检查许多兴趣的sql查询是否匹配

时间:2016-12-12 09:00:14

标签: mysql sql

所以我正在建造一个浪荡公子网站。用户可以根据他们的兴趣搜索其他用户。这只是用于搜索用户的许多参数的一部分。事情是有100个不同的兴趣。搜索其他用户时,他们可以选择用户必须共享的所有兴趣。虽然我可以想办法做到这一点,但我知道搜索尽可能高效是很重要的。 后端使用jdbc连接到mysql数据库。 Java是后端编程语言。 我已经讨论了使用多列感兴趣,但生成的东西是sql查询不需要检查它们所有如果这些列没有在json对象中发送到服务器告诉它搜索条件。另外我担心如果我添加新列,我可能不得不在稍后对表进行痛苦的修改。

我想到的另一件事是存储在单个列中的某种长字节数组或数字(像字节数组一样使用)。我可以&这与另一个与用户正在搜索的兴趣相对应的数字有关但我在某处读到这实际上是非常低效的,尽管它对我的思想很有意义:/

所有这一切都必须是一个大型SQL查询的一部分,其中有多个表加入其中。

我使用多列的一个问题是用于在40列上运行statement.setBoolean的编译能力。 我想过在客户端生成一个xml字符串,然后在sql查询中处理它。

有什么建议吗?

我认为正确的术语是Bitmask。我可能有一个用于位掩码的表,用于将用户ID映射到位掩码以查询用户的兴趣,另一个表用于每个用户ID的每个兴趣的多个条目,以便在以后需要时查找哪个用户有效利益?

1 个答案:

答案 0 :(得分:2)

基本上,拥有一个包含所有兴趣的单独表格会很棒,有两列:idinterest

然后,有一个表格将用户与兴趣相关联:user_interests,其中包含以下列:iduser_idinterest_id。在这里,一些关于多对多关系的知识会有很多帮助。

希望它有所帮助!