Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql子查询非常慢_Mysql_Sql_Subquery - Fatal编程技术网

Mysql子查询非常慢

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

我有一个问题。它工作正常,但速度非常慢。运行最多需要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.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
运行查询,以生成执行计划跟踪,并将其发布,因为这非常有用。