我刚刚将MySQL版本更新为5.7。 SELECT查询有四个INNER-JOINS并且之前需要大约3秒才能执行,现在需要很长时间才能跟踪它。一些分析表明“发送数据”部分耗时太长。谁能告诉我出了什么问题?这是一些数据。请注意,此时查询仍在运行:
+----------------------+-----------+
| Status | Duration |
+----------------------+-----------+
| starting | 0.001911 |
| checking permissions | 0.000013 |
| checking permissions | 0.000003 |
| checking permissions | 0.000003 |
| checking permissions | 0.000006 |
| Opening tables | 0.000030 |
| init | 0.000406 |
| System lock | 0.000018 |
| optimizing | 0.000019 |
| statistics | 0.000509 |
| preparing | 0.000052 |
| executing | 0.000004 |
| Sending data | 31.881794 |
| end | 0.000021 |
| query end | 0.003540 |
| closing tables | 0.000032 |
| freeing items | 0.000214 |
| cleaning up | 0.000028 |
+----------------------+-----------+
这是EXPLAIN的输出:
+----+-------------+--------------------+------------+------+---------------+------------+---------+-------+---------+----------+----------------------------------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+--------------------+------------+------+---------------+------------+---------+-------+---------+----------+----------------------------------------------------+
| 1 | SIMPLE | movie_data_primary | NULL | ref | cinestopId | cinestopId | 26 | const | 1 | 100.00 | NULL |
| 1 | SIMPLE | mg | NULL | ALL | NULL | NULL | NULL | NULL | 387498 | 10.00 | Using where; Using join buffer (Block Nested Loop) |
| 1 | SIMPLE | crw | NULL | ALL | NULL | NULL | NULL | NULL | 1383452 | 10.00 | Using where; Using join buffer (Block Nested Loop) |
| 1 | SIMPLE | cst | NULL | ALL | NULL | NULL | NULL | NULL | 2184556 | 10.00 | Using where; Using join buffer (Block Nested Loop) |
+----+-------------+--------------------+------------+------+---------------+------------+---------+-------+---------+----------+----------------------------------------------------+
答案 0 :(得分:0)
升级msssql版本时看起来像索引问题 - 文档说 -
如果执行二进制升级而不转储和重新加载表, 你无法直接从MySQL 4.1升级到5.1或更高版本。这个 由于MyISAM表索引中的不兼容更改而发生 在MySQL 5.0中格式化。从MySQL 4.1升级到5.0并修复所有 MyISAM表。然后从MySQL 5.0升级到5.1并检查和 修复你的表。修改字符集或 排序规则可能会更改字符排序顺序,从而导致排序 对使用受影响字符的任何索引中的条目进行排序 设置或整理不正确。这样的变化导致了几个 可能出现的问题:与以前不同的比较结果 结果 由于索引条目错误而无法找到某些索引值 错误的ORDER BY结果 CHECK TABLE报告为需要修复的表
检查链接 -