MySQL 5.7.10简单查询比5.6.35慢

时间:2018-11-01 10:46:08

标签: mysql mysql-5.7 mysql-5.6

我已将数据库从5.6.35复制到5.7.10,两者都是MYSQL Community Server版本,由于某种原因,我的查询运行得非常慢。这是一个InnoDB数据库。

5.6是我的开发服务器。

  • Windows Server Standard SP2
  • 32BIT
  • 4GB Ram

5.7是我的生产服务器

  • Windows Server 2008 R2 Enterprise SP1
  • 64BIT
  • 24GB Ram

这绝不是一个复杂的查询。

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
  • 5.6花费0.468秒返回58条记录
  • 7.5需要89.922秒才能返回58条记录

如果我删除查询的(SELECT IFNULL ...)部分,则它运行得非常快,所以不确定为什么这会使查询速度降低到5.7。我在各个表之间设置了所有索引。时间表只有238837行,所以没有那么大。

enter image description here

原因不明...

这里是EXPLAIN的结果,不是很确定这意味着什么。

5.6 enter image description here

5.7 enter image description here

1 个答案:

答案 0 :(得分:0)

任何安装MySQL Server的人都不会费心将INI文件中的 innodb_buffer_pool_size 设置为合适的大小。在24GB的服务器上,实际上只有8M的内存,增加了大小,现在一切都按预期运行。谢谢大家的建议