我已将数据库从5.6.35复制到5.7.10,两者都是MYSQL Community Server版本,由于某种原因,我的查询运行得非常慢。这是一个InnoDB数据库。
5.6是我的开发服务器。
5.7是我的生产服务器
这绝不是一个复杂的查询。
SELECT t.*
,(SELECT `name` FROM users u1 WHERE u1.id = t.addedby) AS addebyname
,(SELECT `name` FROM users u2 WHERE u2.id = t.modifiedby) AS modifiedbyname
,(SELECT `title` FROM tasks_groups tg WHERE tg.id = t.groupid) AS grouptitle
,(
CASE
WHEN t.active=0 THEN CONCAT(t.title,' (Inactive)')
ELSE t.title
END
) AS combo
,(SELECT
IFNULL(SUM(ts.worked),0)
FROM timesheet ts
WHERE ts.taskid=t.id
) AS totaltaskhours
FROM tasks t
如果我删除查询的(SELECT IFNULL ...)部分,则它运行得非常快,所以不确定为什么这会使查询速度降低到5.7。我在各个表之间设置了所有索引。时间表只有238837行,所以没有那么大。
原因不明...
这里是EXPLAIN的结果,不是很确定这意味着什么。
答案 0 :(得分:0)
任何安装MySQL Server的人都不会费心将INI文件中的 innodb_buffer_pool_size 设置为合适的大小。在24GB的服务器上,实际上只有8M的内存,增加了大小,现在一切都按预期运行。谢谢大家的建议