我已经读过类似的问题,但对我没有帮助。
我有疑问
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行(好的,我可以限制它,但是查询仍然很慢)
每个表friends和user都有超过200000行
我能做些什么来加快查询速度?
谢谢您!
2条答案
按热度按时间s5a0g9ez1#
正如评论所指出的,您的左连接实际上与以下内部连接查询没有什么不同:
我们可以尝试向
friends
上的表(parent, child, name, msg_info, ...)
. 我不确定其他栏目属于哪一个friends
,但基本思想是在parent
,以加快WHERE
子句,并希望利用parent
列。然后,我们包括child
列以加速联接。我们还在select子句中包含所有其他列,以便索引覆盖我们需要的其他列。igetnqfo2#
正如@mrvimes所建议的,有时向join子句添加一个条件会产生很大的不同:
当然,假设您的所有pk和fk都已正确定义和索引。