У меня есть два экземпляра mariadb 5.5, и каждый экземпляр имеет одинаковые данные и параметры my.cnf. (На самом деле я скопировал все файлы со старого сервера на новый.)
Когда я запускаю запрос, он выполняется быстро (<1 с) и показывает мне объяснение запроса, как показано ниже ... (хост # 1) </p>
+------+-------------+-----------------+-------+---------------+---------+---------+------------------------------------------------------------------------------------------------------------------------------------------------------+--------+----------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-----------------+-------+---------------+---------+---------+------------------------------------------------------------------------------------------------------------------------------------------------------+--------+----------------------------------------------+
| 1 | PRIMARY | TABLE1 | index | NULL | PRIMARY | 130 | NULL | 9792 | Using where; Using index |
| 1 | PRIMARY | <derived2> | ref | key0 | key0 | 135 | testdb.TABLE1.COL1,testdb.TABLE1.COL2,testdb.TABLE1.COL3,testdb.TABLE1.COL4,testdb.TABLE1.COL5 | 30 | |
| 2 | DERIVED | TABLE2 | range | PRIMARY | PRIMARY | 8 | NULL | 299012 | Using where; Using temporary; Using filesort |
+------+-------------+-----------------+-------+---------------+---------+---------+------------------------------------------------------------------------------------------------------------------------------------------------------+--------+----------------------------------------------+
Другой работает долго (более 15 секунд) и показывает мне другое объяснение, как показано ниже ... (хост # 2)
+------+-------------+-----------------+-------+---------------+-------------------+---------+------+--------+-------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-----------------+-------+---------------+-------------------+---------+------+--------+-------------------------------------------------+
| 1 | PRIMARY | TABLE1 | index | NULL | PRIMARY | 130 | NULL | 8123 | Using index |
| 1 | PRIMARY | <derived2> | ALL | NULL | NULL | NULL | NULL | 294954 | Using where; Using join buffer (flat, BNL join) |
| 2 | DERIVED | TABLE2 | range | PRIMARY | PRIMARY | 8 | NULL | 294954 | Using where; Using temporary; Using filesort |
+------+-------------+-----------------+-------+---------------+-------------------+---------+------+--------+-------------------------------------------------+
Когда я случайно установил derived_with_keys
на off
на хосте № 1, результат такой же, как на хосте № 2, и я думаю, что хост № 1 выбирает операцию derived_with_keys
, а хост № 2 - нет.
Как заставить мой новый сервер использовать derived_with_keys
?
Любой совет будет оценен.