Я только что обновил мою версию 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) |
+----+-------------+--------------------+------------+------+---------------+------------+---------+-------+---------+----------+----------------------------------------------------+
Похоже на проблему индексирования при обновлении документации msssql version- says-
Если вы выполняете двоичное обновление без демпинга и перезагрузки таблиц, вы не можете обновлять его напрямую с MySQL 4.1 до 5.1 или выше. Это происходит из-за несовместимого изменения формата индекса таблицы MyISAM в MySQL 5.0. Обновление с MySQL 4.1 до 5.0 и восстановление всех таблиц MyISAM. Затем выполните обновление с MySQL 5.0 до 5.1 и проверьте и восстановите свои таблицы. Модификации обработки наборов символов или сортировок могут изменить порядок сортировки символов, что приводит к неправильному порядку записей в любом индексе, который использует поврежденный набор символов или сопоставление, Такие изменения приводят к нескольким возможным проблемам: результаты сравнения, которые отличаются от предыдущих результатов. Неспособность найти некоторые значения индекса из-за ошибочных записей индекса. Ошибочные результаты ORDER BY. Таблицы, которые CHECK TABLE сообщают как нуждающиеся в ремонте
Проверьте наличие links-