【发布时间】:2016-06-15 10:17:51
【问题描述】:
基本上我想做的是根据共同兴趣向人们推荐。
我有一个用户表(id、用户名、名字、姓氏等)
我有一个 Interested_People 表,其中存储了 UserID + Interested_in。
我有一个联系人列表表,其中存储了彼此添加的人。(user1,user2,接受 [1,0])
我想要的是选择 * users 表,他们不是我的朋友,他们也和我有同样的兴趣。
我在互联网上搜索了很多,但找不到类似的东西。
Here i do have created a query and it does exactly what I want. But it is very slow. Even it takes 16 to 20 second to output in PHPMyAdmin in my local machine. Now I Kindly request you guys if you can edit my query a bit and make it bandwidth & time efficient.
SELECT *
FROM users
WHERE id IN(SELECT userid
FROM interested_people
WHERE interested_in IN(SELECT interested_in
FROM interested_people
WHERE userid = [userid])
AND id NOT IN(SELECT user1 AS my_friends_userid
FROM contactlist f
WHERE f.user2 = [userid]
AND accepted = 1
UNION
SELECT user2 AS my_friends_userid
FROM contactlist f
WHERE f.user1 = [userid]
AND accepted = 1))
AND id != [userid]
ORDER BY Rand ()
LIMIT 0, 10;
此查询中的[Userid] 是在线用户的ID。如果我在线,我的 ID 将是 1。
这个查询随机推荐了 10 个不是我朋友但和我有相同兴趣的用户。但是很慢。
提前致谢!
【问题讨论】:
-
你的 MySQL 版本是多少?您是否尝试过使用 SQL 查询运行解释?
标签: mysql sql phpmyadmin