首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何加速这个mySQL查询(文件排序问题)?

如何加速这个mySQL查询(文件排序问题)?
EN

Stack Overflow用户
提问于 2015-06-25 14:03:15
回答 1查看 43关注 0票数 2

我有以下MYSQL查询:

代码语言:javascript
复制
select IF(`User`='101',`Friend`,`User`) as `Kto`,`Recent` 
from `friends` 
WHERE (`User`='101' || `Friend`='101') AND `Status`=1 
HAVING `Kto` IN (SELECT `Id` FROM `users` WHERE `Id`=`Kto` AND `Online`>='100') 
ORDER by Recent DESC limit 11

使用ORDER by Recent DESC查询需要更长的时间(显示行0- 10 (总共11行,查询耗时0.0090秒),最近: 9337663 - 7683644)

如果我不使用Order by,它就太快了(显示第0- 10行(总共11行,查询耗时0.0005秒))

在explain query with ORDER by显示文件排序中,我猜这是速度慢的问题,如下所示:

你能帮助我,如何摆脱这个文件排序,或者如何优化这个查询,或者帮助我为这个查询添加合适的索引吗?

EN

回答 1

Stack Overflow用户

发布于 2015-06-25 14:18:19

你可以试试这个,伙计:

代码语言:javascript
复制
SELECT
    IF(f.`User`='101',f.`Friend`,f.`User`) as `Kto`,
    f.`Recent`
FROM
    `friends` f
    INNER JOIN `users` u ON u.`Id` IN (f.`User`, f.`Friend`)
WHERE 
    (f.`User` = '101' || f.`Friend` = '101')
    AND f.`Status` = 1
    AND u.`Online` >= '100'
ORDER BY
    f.Recent DESC
LIMIT 11;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31042359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档