打扰一下,如果之前有人询问过这个问题,但是我尝试寻找类似的东西,却找不到任何东西。
我有三个表:用户,爱好和user_hobbies(链接前两个)。我想基于他们的爱好来计算两个用户之间的相似性。为此,我首先需要两套:用户A爱好和用户B爱好,我可以通过两个简单的查询获得。我还必须在php文件中计算这两个集合,因为它们可以在两个数组中用于下一步:
我必须计算他们的共同爱好(即集合的交集)。
想法#1:有两个数组,我可以通过某种方法计算出共同的元素。
创意#2:我可以进行第三次查询(例如SELECT hobby FROM user_hobbies WHERE user_id IN ('uid_A', 'uid_B') GROUP BY hobby HAVING COUNT (*) = 2
),而不是打扰自己。
我想我的问题是关于表现。手动计算或更快的mysql查询更快?
答案 0 :(得分:0)
简而言之:如果您的操作不是设置基本操作,最好将其移出MsSql或任何RDBMS。
因为,您无法轻松扩展MsSQL。
答案 1 :(得分:0)
您已经有一个规范化的表来保存用户爱好表,那么为什么不这样做呢?
一般来说,SQL会快得多,至少对于前100k左右的记录来说。然后,您将看到通过未编制索引的列查询的查询或使用“filesort”查询ORDER BY关键字带来的大型数据集的查询的性能下降。
为了扩展性,我建议使用内连接来缩小初学者的可能性。
批判性地思考这一点。还有没有提到的其他列可能表明用户可能有多个爱好?这些是您在扩展应用程序时考虑的事项。
否则,你应该对初学者没问题,以免过早地进行优化。
我会选择#2选项。