MySql中的多级数据选择
假设我们有一个包含一百万行的用户表。每个用户大约有100个朋友。所以我们可能会得到一个大约100000000行的friends表 现在,如果一个用户发布了一些东西,并定义了它对他的朋友和他的朋友的朋友的共享和可见性。。。[100*100*100](如Google+circles),以最快的方式获取所需列表的最佳方式是什么。(我指的是选择类型…如果需要额外的表格…)MySql中的多级数据选择,mysql,sql,facebook,Mysql,Sql,Facebook,假设我们有一个包含一百万行的用户表。每个用户大约有100个朋友。所以我们可能会得到一个大约100000000行的friends表 现在,如果一个用户发布了一些东西,并定义了它对他的朋友和他的朋友的朋友的共享和可见性。。。[100*100*100](如Google+circles),以最快的方式获取所需列表的最佳方式是什么。(我指的是选择类型…如果需要额外的表格…) 非常感谢。我不知道这是否是最快的方法,但您可以使用内部联接来实现这一点。假设您要为user_id=1的用户检索朋友和朋友的朋友,可以
非常感谢。我不知道这是否是最快的方法,但您可以使用内部联接来实现这一点。假设您要为user_id=1的用户检索朋友和朋友的朋友,可以执行以下操作:
(select friend_id from friends where user_id = 1)
union
(select distinct f2.friend_id from friends f1
INNER JOIN friends f2 on f2.user_id = f1.friend_id
where f1.user_id = 1)
同样,我不确定这是否是最快的方法,但它比使用Select子查询更好
编辑:第一个SELECT语句将为您提供id为1的用户的朋友的用户列表。第二个SELECT语句将为您提供一个与id=1的用户的所有朋友都是朋友的用户列表。第二个语句使用了。最后,两个结果集使用并集进行组合。我不知道这是否是最快的方法,但您可以使用内部联接来实现这一点。假设您要为user_id=1的用户检索朋友和朋友的朋友,可以执行以下操作:
(select friend_id from friends where user_id = 1)
union
(select distinct f2.friend_id from friends f1
INNER JOIN friends f2 on f2.user_id = f1.friend_id
where f1.user_id = 1)
同样,我不确定这是否是最快的方法,但它比使用Select子查询更好
编辑:第一个SELECT语句将为您提供id为1的用户的朋友的用户列表。第二个SELECT语句将为您提供一个与id=1的用户的所有朋友都是朋友的用户列表。第二个语句使用了。最后,两个结果集使用并集进行组合。我对答案做了一些更改。希望这次的解释能有所帮助。:)哦,如果你还不明白的话,请告诉我。我对答案做了一些修改。希望这次的解释能有所帮助。:)哦,如果你还不明白的话,请告诉我。