我有一个应用程序,可以从用户的 Facebook 帐户中保存用户的点赞,然后在一个用户访问另一个用户的个人资料时显示常见的点赞。有两种方法可以做到这一点: 1. 由于我已经从数据库中获取了 user1 的点赞数,因此我可以将 ID 保存在 字符串如
$user1_likes="1,2,5,6,10,15,19";
然后使用此查询来查找常见的喜欢:
SELECT name FROM user_like WHERE uid='user2' AND id IN ($user1)
或者,我可以执行此查询
SELECT name FROM user_like WHERE uid='user2' AND id IN (SELECT id FROM user_like WHERE uid='user1')
第一种方法的问题是,如果 user1 有很多点赞(比如 4000),查询可能会变得太大,mysql 无法处理。 方法2的问题是mysql应该再次选择它已经选择的内容。
您建议如何处理这种情况?
最佳答案
max_allowed_packet 的默认值为 16 MB ( http://dev.mysql.com/doc/refman/5.1/en/packet-too-large.html ),因此您的第一个查询有 4'000 个赞应该没有问题。即使是 10'000 或 100'000 也没有问题。
如果有 10'000/100'000 个赞,请尝试找出哪一个更快。如果您有正确的索引,第二个查询也不应该成为问题。
就我个人而言,我会选择第二个。
关于php - 找到两个用户之间共同喜好的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19207192/