Mysql子查询非常慢
我有一个问题。它工作正常,但速度非常慢。运行最多需要30秒Mysql子查询非常慢,mysql,sql,subquery,Mysql,Sql,Subquery,我有一个问题。它工作正常,但速度非常慢。运行最多需要30秒 SELECT t.Id, Subject, k.info FROM tip t LEFT JOIN comments k ON t.Id = k.Tipid WHERE event = 1 AND k.Id IN ( SELECT Max(Id) FROM comments GROUP BY Tipid ) 如果我只运行子查询(通过Tipid从comments GROUP中选择Max(Id)),运行大约需要0.02秒 SELECT t
SELECT t.Id, Subject, k.info
FROM tip t
LEFT JOIN comments k ON t.Id = k.Tipid
WHERE event = 1
AND k.Id
IN (
SELECT Max(Id) FROM comments GROUP BY Tipid
)
如果我只运行子查询(通过Tipid从comments GROUP中选择Max(Id)),运行大约需要0.02秒
SELECT t.Id, Subject, k.info
FROM tip t
LEFT JOIN comments k ON t.Id = k.Tipid
WHERE event = 1
AND k.Id
IN (
SELECT Max(Id) FROM comments GROUP BY Tipid
)
子查询有问题。你有什么想法吗?试试这个:
SELECT t.Id, t.Subject, c.info
FROM tip t
LEFT JOIN
(
SELECT Tipid, MAX(Id) AS MaxId
FROM comments
GROUP BY Tipid
) AS c ON t.Id = c.Tipid
AND t.Id = c.MaxId
WHERE t.event = 1;
如果选择max(id),则不需要分组方式。请尝试此操作
这有很多原因。。。
我想你试试这个
SELECT t.Id, Subject, k.info
FROM tip t
INNER JOIN comments k ON t.Id = k.Tipid
WHERE event = 1
AND k.Id IN ( SELECT Max(Id) FROM comments GROUP BY Tipid )
因为50条记录后左连接变得太慢 当询问有关查询性能的问题时,请尝试包含有关您正在使用的表的一些详细信息,例如表中的行、索引。还可以尝试在开始时使用单词EXPLAIN
运行查询,以生成执行计划跟踪,并将其发布,因为这非常有用。