小编Cor*_*999的帖子

MySQL检索朋友结构和性能的朋友

我只想在MySQL中找到一个数据库结构,以获取所有用户朋友的朋友以及相应的查询来检索它们.(朋友链接是双向的)

我找到了几个与此相关的帖子,但我担心的是性能:

结构1

很多帖子都建议一个结构,你有一个表,其中每一行代表一个友情链接,例如:

    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万行.

结构2

如果我可以使用这样的结构:

    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)

mysql database performance structure

5
推荐指数
1
解决办法
1828
查看次数

标签 统计

database ×1

mysql ×1

performance ×1

structure ×1