我只想在MySQL中找到一个数据库结构,以获取所有用户朋友的朋友以及相应的查询来检索它们.(朋友链接是双向的)
我找到了几个与此相关的帖子,但我担心的是性能:
很多帖子都建议一个结构,你有一个表,其中每一行代表一个友情链接,例如:
CREATE TABLE `friends` (
`user_id` int(10) unsigned NOT NULL,
`friend_id` int(10) unsigned NOT NULL,
)
Run Code Online (Sandbox Code Playgroud)
说用户'1'有三个朋友'2','3','4',用户'2'有两个朋友'1','5'.你的朋友表看起来像这样:
user_id | friend_id
1 | 2
1 | 3
1 | 4
2 | 1
2 | 5
Run Code Online (Sandbox Code Playgroud)
朋友的朋友查询:如何选择朋友的朋友可以在这里看到SQL获取用户朋友和朋友的朋友.用户'1'的查询的结果应该给(1,2,3,4,5)
我担心:平均fb用户有大约140个朋友.频繁的用户将拥有更多.如果我有20,000个用户,那么最终将至少有300万行.
如果我可以使用这样的结构:
CREATE TABLE `friends` (
`user_id` int(10) unsigned NOT NULL,
`friend_1` int(10) unsigned NOT NULL,
`friend_2` int(10) unsigned NOT NULL,
`friend_3` int(10) unsigned NOT NULL,
`friend_4` int(10) unsigned NOT NULL,
....
)
Run Code Online (Sandbox Code Playgroud)
我的表看起来像这样(从上面举例):
user_id | friend_1 …Run Code Online (Sandbox Code Playgroud)