Mysql 查询可以工作,但执行起来需要很多时间
我有一个查询,它的目的是只获取跟踪用户的beatmapsMysql 查询可以工作,但执行起来需要很多时间,mysql,Mysql,我有一个查询,它的目的是只获取跟踪用户的beatmaps SELECT *, maps.uid, maps.add_time, maps.id as mapid FROM maps LEFT JOIN follows ON (follows.fid = maps.uid AND follows.uid = 3443963) WHERE follows.id IS NOT NULL AND
SELECT *,
maps.uid,
maps.add_time,
maps.id as mapid
FROM maps
LEFT JOIN follows ON
(follows.fid = maps.uid
AND follows.uid = 3443963)
WHERE follows.id IS NOT NULL
AND maps.uid != 3443963
AND add_time = (SELECT max(add_time)
FROM maps i
WHERE i.sid = maps.sid)
GROUP BY sid
ORDER BY maps.add_time DESC LIMIT 9
查询工作正常,但执行时间超过6秒。有没有办法让它运行得更快?您需要为Select查询中使用的列添加索引 查询示例:
ALTER TABLE `tablename`
ADD INDEX (`uid`);
ALTER TABLE `maps`
ADD INDEX (`uid`);
ALTER TABLE `maps`
ADD INDEX (`add_time`);
ALTER TABLE `maps`
ADD INDEX (`sid`);
ALTER TABLE `follows`
ADD INDEX (`fid`);
您需要以下索引:
ALTER TABLE `tablename`
ADD INDEX (`uid`);
ALTER TABLE `maps`
ADD INDEX (`uid`);
ALTER TABLE `maps`
ADD INDEX (`add_time`);
ALTER TABLE `maps`
ADD INDEX (`sid`);
ALTER TABLE `follows`
ADD INDEX (`fid`);
maps.uid
,之后是.fid
,maps.sid
和maps.add\u time
查询:
ALTER TABLE `tablename`
ADD INDEX (`uid`);
ALTER TABLE `maps`
ADD INDEX (`uid`);
ALTER TABLE `maps`
ADD INDEX (`add_time`);
ALTER TABLE `maps`
ADD INDEX (`sid`);
ALTER TABLE `follows`
ADD INDEX (`fid`);
你能显示表格结构吗?地图有id,uid,添加时间。下面有uid,fid(被跟踪的用户)您有多少行?您创建了索引吗?大约3k行,但当我只选择整个表时,它运行得又好又快。我猜是连接导致的。是的,我有索引