Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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中的多级数据选择_Mysql_Sql_Facebook - Fatal编程技术网

MySql中的多级数据选择

MySql中的多级数据选择,mysql,sql,facebook,Mysql,Sql,Facebook,假设我们有一个包含一百万行的用户表。每个用户大约有100个朋友。所以我们可能会得到一个大约100000000行的friends表 现在,如果一个用户发布了一些东西,并定义了它对他的朋友和他的朋友的朋友的共享和可见性。。。[100*100*100](如Google+circles),以最快的方式获取所需列表的最佳方式是什么。(我指的是选择类型…如果需要额外的表格…) 非常感谢。我不知道这是否是最快的方法,但您可以使用内部联接来实现这一点。假设您要为user_id=1的用户检索朋友和朋友的朋友,可以

假设我们有一个包含一百万行的用户表。每个用户大约有100个朋友。所以我们可能会得到一个大约100000000行的friends表

现在,如果一个用户发布了一些东西,并定义了它对他的朋友和他的朋友的朋友的共享和可见性。。。[100*100*100](如Google+circles),以最快的方式获取所需列表的最佳方式是什么。(我指的是选择类型…如果需要额外的表格…)
非常感谢。

我不知道这是否是最快的方法,但您可以使用内部联接来实现这一点。假设您要为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的用户的所有朋友都是朋友的用户列表。第二个语句使用了。最后,两个结果集使用并集进行组合。

我对答案做了一些更改。希望这次的解释能有所帮助。:)哦,如果你还不明白的话,请告诉我。我对答案做了一些修改。希望这次的解释能有所帮助。:)哦,如果你还不明白的话,请告诉我。