gpt4 book ai didi

mysql - 为什么我共同的好友查询这么慢?

转载 作者:行者123 更新时间:2023-11-29 07:33:34 25 4
gpt4 key购买 nike

过去,当我的数据库中只有有限数量的 friend 时,此查询运行得非常快,但是随着用户群的增长,我发现查询速度呈指数级下降。

我的 friend 表的架构如下所示:

friend_id   -   entity_id1  -   entity_id2   -   category 
1 1 2 1
2 2 1 1
3 3 2 1
4 2 3 1
5 1 3 1
6 3 1 1

正如我们在上面看到的,每个好友关联之间都存在互惠关系,这样做是为了缩短推荐好友的查询时间。

我现在尝试在我建议的 friend 有效负载中返回共同的 friend ,但是在 while 循环中为每个用户编译查询大约需要 1 秒,而我目前只有 2000 个用户......这将是一个巨大的问题随着应用程序进一步扩展。

我当前使用的查询如下:

SELECT COUNT(*) AS mutual_count
FROM entity
WHERE EXISTS(
SELECT *
FROM friends
WHERE friends.Entity_Id1 = :friendId AND friends.Category <> 4
AND friends.Entity_Id2 = entity.Entity_Id
)
AND EXISTS(
SELECT *
FROM friends
WHERE friends.Entity_Id1 = :userId AND friends.Category <> 4
AND friends.Entity_Id2 = entity.Entity_Id
)

其中:userId 是登录用户,:friendId 是我们想要获取共同好友的用户。正如我所说,这个查询工作正常,但速度非常慢,我该如何优化它?

最佳答案

你有两个相关的子查询,这是你在 mysql 中可以获得的最快的查询,这两个子查询的最佳索引是这个:

ALTER TABLE friends ADD KEY (Entity_Id1, Category, Entity_Id2)

关于mysql - 为什么我共同的好友查询这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31725564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com