假设我们有 100 万行的用户表。每个用户有大约 100 个 friend 。所以我们可能会想出一个包含大约 100,000,000 行的 friend 表。
现在,如果一个用户发布了一些东西,并定义了它对他的 friend 和他 friend 的 friend 的分享和可见性...[100*100*100](如 Google+ 圈子),什么是获得这个所需列表的最佳方式最快的方法。 (我的意思是选择类型......如果需要额外的表格......) 非常感谢。
最佳答案
我不知道这是否是最快的方法,但您可以使用Inner Join 来做到这一点。比方说,你想为 user_id=1 的用户检索 friend 和 friend 的 friend ,你可以这样做:
(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 用户的 friend 。第二个 SELECT 语句将为您提供一个用户列表,这些用户是 id = 1 用户的所有 friend 的 friend = 1. 第二条语句使用了 INNER JOIN .最后,使用 UNION 组合两个结果集。
关于mysql - MySql中的多级数据选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20036652/