我正在使用一个通常在一秒内执行的查询,但有时需要10-40秒才能完成。我实际上并不完全清楚子查询的工作原理,只知道它起作用,因为它为每个faverprofileid给出了15行数据。
我正在记录慢查询,并告诉我已经检查了5823244行,这很奇怪,因为涉及的任何表中都没有那么多行(最多只有50000行的收藏夹表)。
是否有人可以给我一些指针?是子查询的问题,需要使用filesort?
编辑:运行解释显示用户表没有使用索引(尽管id是主键)。在extra下显示:Using temporary; Using filesort.
我正在记录慢查询,并告诉我已经检查了5823244行,这很奇怪,因为涉及的任何表中都没有那么多行(最多只有50000行的收藏夹表)。
是否有人可以给我一些指针?是子查询的问题,需要使用filesort?
编辑:运行解释显示用户表没有使用索引(尽管id是主键)。在extra下显示:Using temporary; Using filesort.
SELECT F.id,F.created,U.username,U.fullname,U.id,I.*
FROM favorites AS F
INNER JOIN users AS U ON F.faver_profile_id = U.id
INNER JOIN items AS I ON F.notice_id = I.id
WHERE faver_profile_id IN (360,379,95,315,278,1)
AND F.removed = 0
AND I.removed = 0
AND F.collection_id is null
AND I.nudity = 0
AND (SELECT COUNT(*) FROM favorites WHERE faver_profile_id = F.faver_profile_id
AND created > F.created AND removed = 0 AND collection_id is null) < 15
ORDER BY F.faver_profile_id, F.created DESC;