Я скопировал базу данных с 5.6.35 на 5.7.10, обе версии MYSQL Community Server, и по какой-то причине мой запрос выполняется очень медленно. Это база данных InnoDB.
5.6 - мой сервер разработки.
- Windows Server Standard SP2
- 32BIT
- 4 ГБ RAM
5.7 - мой рабочий сервер
- Windows Server 2008 R2 Enterprise SP1
- 64BIT
- 24 ГБ 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 для возврата 58 записей требуется 0,468 с
- 7,5 занимает 89,922 с, чтобы вернуть 58 записей
Если я удаляю (SELECT IFNULL ...) часть запроса, он выполняется очень быстро, поэтому не уверен, почему это замедляет запрос на 5.7. У меня есть все индексы, установленные между различными таблицами. В расписании всего 238837 строк, поэтому он не такой большой.
Немного потеряна причина этого ...
Вот ОБЪЯСНЕНИЕ результатов, не совсем понятно, что все это значит ..
5,6
5,7