gpt4 book ai didi

mysql - 使用 LEFT JOIN 的慢速 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 16:55:13 25 4
gpt4 key购买 nike

我已经读过类似的问题,但这对我没有帮助。

我有疑问

SELECT `login`, 
`photo`,
`username`,
`user`.`id`,
`name`,
`msg_info`
FROM `user`
LEFT JOIN `friends`
ON `friends`.`child` = `user`.`fb_id`
WHERE `friends`.`parent` = '1111'
ORDER BY `msg_info` DESC

这需要0.7411秒(甚至更多)

它显示总计 158 行(好吧,我可以限制它,但查询仍然很慢)

每个表friendsuser都有超过200.000行

如何才能使查询速度更快?

谢谢!

最佳答案

正如评论所指出的,您的左连接实际上与以下内部连接查询没有什么不同:

SELECT
login,
photo,
username,
user.id,
name,
msg_info
FROM user u
INNER JOIN friends f
ON f.child = u.fb_id
WHERE
f.parent = '1111'
ORDER BY
msg_info DESC;

我们可以尝试在 (parent, child, name, msg_info, ...)friends 表中添加索引。我不确定哪些其他列属于 friends,但基本思想是在 parent 上创建索引,以加快 WHERE 子句的速度,并希望利用 parent 列上的低基数。然后,我们包含 child 列以加快连接速度。我们还将所有其他列包含在 select 子句中,以便让索引覆盖我们需要的其他列。

CREATE INDEX idx ON friends (parent, child, name, msg_info, ...);

关于mysql - 使用 LEFT JOIN 的慢速 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52604906/

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