我已经阅读了类似的问题,但它对我没有帮助。
我有查询
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
这tooks 0.7411秒(甚至更多)
它显示总共 158行(好吧我可以限制它,但查询仍然很慢)
每个表朋友和用户都有超过 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;
我们可以尝试向 上的friends
表添加索引(parent, child, name, msg_info, ...)
。我不确定其他哪些列属于friends
,但基本思想是在 上创建索引parent
,以加速WHERE
子句,并希望利用parent
列上的低基数。然后,我们包含该child
列以加快连接速度。我们还在 select 子句中包含所有其他列,让索引覆盖我们需要的其他列。
CREATE INDEX idx ON friends (parent, child, name, msg_info, ...);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句