mysql - sql 查询来检查许多兴趣是否匹配

标签 mysql sql

所以我正在建立一个浪荡公子网站。用户可以根据自己的兴趣搜索其他用户。这只是用于搜索用户的许多参数的一部分。问题是有大约 100 种不同的兴趣。当搜索其他用户时,他们可以选择该用户必须分享的所有兴趣。虽然我可以想出方法来做到这一点,但我知道尽可能高效的搜索很重要。 后端使用jdbc连接mysql数据库。 Java是后端编程语言。 我曾争论过使用多个列来满足兴趣,但生成的问题是,如果这些列未在发送到服务器的 json 对象中解决,并告知其搜索条件,则 sql 查询不需要检查所有列。我还担心,如果我添加新列,我可能必须在稍后对表进行痛苦的修改。

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

所有这些都必须是一个大型 SQL 查询的一部分,其中包含多个表。

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

有什么建议吗?

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

最佳答案

基本上,如果有一个包含所有兴趣的单独表(2 列:idinterest),那就太好了。

然后,创建一个将用户链接到兴趣的表:user_interests,其中包含以下列:iduser_idinterest_id。在这里,了解一些有关多对多关系的知识会有很大帮助。

希望对您有所帮助!

关于mysql - sql 查询来检查许多兴趣是否匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41097252/

相关文章:

php - SQL - 选择 unixtimestamp 作为日期

sql - 是否可以在不定义模式的情况下插入表变量?

mysql - 如何使用矩阵顺序选择顶部不同的值

Java SQL 访问行数据

php - 从mysql获取第二行的输出

php - 复杂的 SELECT MySQL 语句

c# - 如何使用 Entity Framework 访问 MySQL 数据库

mysql - Prestashop 导出数据库并将其导入回来

php - 通过 url 中的特定 id 从 MySQL 数据库中获取数据

php - 使用 MySQL 直接从列的数据中获取列表