【发布时间】:2015-06-25 06:03:14
【问题描述】:
我有以下 MYSQL 查询:
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 秒))
在用 ORDER by show filesort 解释查询时,我猜这是速度慢的问题,见下文:
您能帮我吗,如何摆脱这个文件排序,或者如何优化这个查询,或者帮我为这个查询添加适当的索引?
【问题讨论】:
-
感谢链接,但我不知道我的查询中有什么障碍...