【问题标题】:MySQL Query Explain Efficiency on 5.0 vs 5.6MySQL Query Explain Efficiency on 5.0 vs 5.6
【发布时间】:2013-12-12 01:18:17
【问题描述】:

我们刚刚将我们的数据库服务器移到了一台新机器上,并从 mysql 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 服务器

Bailout 5.0 服务器

我可以追求什么明显的东西,看起来像是遍历变量,寻找任何明显的东西,但我不确定主要的踢球者可能是什么,但显然我想做初级选择不是简单的,只有一个大的行数。

提前致谢

【问题讨论】:

  • 好像缺少一些键。
  • 两个数据库中的所有密钥都相同,我还从两个服务器上删除了数据库,并从相同的备份恢复到两个数据库。

标签: mysql explain optimization mysql-5.6


【解决方案1】:

【讨论】:

    【解决方案2】:

    在 5.5 的发布/审核过程中,我们检查了 5.0、5.5 和 5.6 中的每个设置,以尝试创建一个超级集。

    我们发现 5.5 到 5.6 中的 optimizer_switch 设置发生了很大变化,因此在我们回滚之前,让我们将附加功能设置为关闭。

    这行得通。

    进一步检查,关键设置是 semijoin。将此设置为关闭,使 5.6 和 5.5 一样快

    我真的希望这对某人有所帮助。
    干杯

    【讨论】:

      猜你喜欢
      • 2016-03-07
      • 2016-12-06
      • 2014-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2011-07-06
      相关资源
      最近更新 更多