我们刚刚将我们的数据库服务器移到了一台新机器上,并从 5.0 升级到了 mysql 5.6。我们有一个保持同步的救助服务器,并且仍然在 mysql 5.0,所有表都是 MyISAM,我在新服务器上遇到了减速。我已经在两台服务器上的所有相关表上运行了检查、分析、修复、优化,但新服务器仍然需要大约 20 秒,而旧服务器需要 0.2 秒才能运行以下查询。
SELECT DISTINCT `personBaseData`.`PersonID`,
`personBaseData`.`Forename`,
`personBaseData`.`Nickname`,
`personBaseData`.`Surname`,
COUNT(*) AS Count
FROM `personBaseData`
LEFT JOIN `sessionAttendance`
ON (( `personBaseData`.`PersonID` =
`sessionAttendance`.`ContactID` )
AND ( `sessionAttendance`.`ContactType` = 'Individual' ) )
JOIN `sessionBaseData`
ON (( `sessionAttendance`.`SessionID` = `sessionBaseData`.`SessionID` ))
JOIN `sessionGroupBaseData`
ON (( `sessionBaseData`.`SessionGroupID` = `sessionGroupBaseData`.`SessionGroupID` ))
WHERE `personBaseData`.`PersonID` IN (SELECT `PersonID`
FROM `personFlexData`
WHERE ( `flexName` = 'Organisation_P_27'
AND `flexValue` = 'HCCT' ))
AND `sessionBaseData`.`StartDate` > '2013-08-15'
AND `sessionAttendance`.`Attended` = '1'
AND `sessionGroupBaseData`.`Title` = 'Open Access (HCCT)'
AND `personBaseData`.`Type` & '1'
GROUP BY `personBaseData`.`PersonID`
ORDER BY Count DESC,
`personBaseData`.`Forename` ASC,
`personBaseData`.`Nickname` ASC,
`personBaseData`.`Surname` ASC ;
在两台服务器上对此 sql 运行解释,返回
新的 5.6 服务器
救助 5.0 服务器
有什么明显的我可以追求的吗,看起来像是遍历变量,寻找任何明显的东西,但我不确定主要的踢球者可能是什么,但显然我想做初级选择而不是简单的选择,并且只有一个大行数。
提前致谢