Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 用于检查多个兴趣是否匹配的sql查询_Mysql_Sql - Fatal编程技术网

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

Mysql 用于检查多个兴趣是否匹配的sql查询,mysql,sql,Mysql,Sql,所以我正在建立一个swingers网站。用户可以根据自己的兴趣搜索其他用户。这只是用于搜索用户的许多参数的一部分。问题是有100种不同的兴趣。搜索其他用户时,他们可以选择用户必须共享的所有兴趣。虽然我可以想出一些方法来做到这一点,但我知道搜索尽可能高效是很重要的。 后端使用jdbc连接到mysql数据库。Java是后端编程语言。 我已经讨论过如何使用多个列来表示兴趣,但生成的问题是,如果发送给服务器的json对象中没有对这些列进行寻址,那么sql查询不需要检查所有列,并告诉服务器搜索条件。我还担

所以我正在建立一个swingers网站。用户可以根据自己的兴趣搜索其他用户。这只是用于搜索用户的许多参数的一部分。问题是有100种不同的兴趣。搜索其他用户时,他们可以选择用户必须共享的所有兴趣。虽然我可以想出一些方法来做到这一点,但我知道搜索尽可能高效是很重要的。 后端使用jdbc连接到mysql数据库。Java是后端编程语言。
我已经讨论过如何使用多个列来表示兴趣,但生成的问题是,如果发送给服务器的json对象中没有对这些列进行寻址,那么sql查询不需要检查所有列,并告诉服务器搜索条件。我还担心,如果我添加了新的列,以后可能不得不对表进行痛苦的修改

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

所有这些都必须是一个包含多个表的大型sql查询的一部分

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

有什么建议吗


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

基本上,最好有一个包含所有兴趣的单独表,两列:
id
interest

然后,创建一个将用户链接到兴趣的表:
user\u interests
,该表将包含以下列:
id
user\u id
interest\u id
。在这里,一些关于多对多关系的知识会有很大帮助


希望有帮助

基本上,最好有一个包含所有兴趣的单独表,2列:
id
interest

然后,创建一个将用户链接到兴趣的表:
user\u interests
,该表将包含以下列:
id
user\u id
interest\u id
。在这里,一些关于多对多关系的知识会有很大帮助


希望有帮助

“兴趣多列”通常不是一个好主意。您可以使用单独的表来保存兴趣。这将是足够简单的维护。位图可能是一个问题,因为所需的空间会根据2^(兴趣的数量)而增加,这是不推荐的。您可能希望阅读一对多和多对多关系以及处理它们的策略。“兴趣的多列”通常是一个坏主意。您可以使用单独的表来保存兴趣。这将是足够简单的维护。位图可能是一个问题,因为所需的空间会根据2^(不推荐兴趣)而增加。您可能希望阅读一对多和多对多关系以及处理这些关系的策略。此外,在找到解决方案时,您应该尝试关闭问题。在找到解决方案时,你应该试着结束这个问题