gpt4 book ai didi

MYSQL IN 替代方案

转载 作者:行者123 更新时间:2023-11-29 08:12:45 31 4
gpt4 key购买 nike

我正在编写一个社交网络类型的网站,用户有 friend ,我正在尝试使用他们的 friend 所做的操作创建新闻提要

我有三张 table

用户

id     |    username
---------------------
1 | john
2 | nicole
3 | bob

friend

id     |    uid    |    who
----------------------------
1 | 1 | 2
2 | 2 | 1
3 | 2 | 3
4 | 3 | 2
5 | 3 | 1
6 | 1 | 3

行动

id    |    owner    |  to_id  |    message 
-------------------------------------------
1 | 3 | 2 | 'hello'
2 | 3 | 1 | 'yoooo'

由于“john”是“bob”的 friend ,“john”应该能够看到“bob”对“nicole”的操作

编辑::如果“nicole”向“bob”发送操作,我还想从另一个方向获取操作

我当前的解决方案是:

有一个包含用户所有 friend 的字符串:$friends = '1,2,3,4....etc'

查询:

SELECT 
`Actions`.*
FROM
`Actions`
WHERE
(`Actions`.`to_id` IN (${friends}) OR `Actions`.`from_id` IN (${friends}))
AND
( `Actions`.`to_id` != (${logged_id} AND `Actions`.`from_id` != (${logged_id})
ORDER BY
`Actions`.`time` ASC
LIMIT
15

上面的查询有效,但我的问题是,当用户开始有数百个 friend 时,此查询将非常慢,我可以采取什么替代方法来防止这种情况发生?

最佳答案

如果您想尝试不同的更好的解决方案,请尝试使用任何流行的图形数据库。它非常适合您当前的要求。

关于MYSQL IN 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21265133/

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