ненормальное «плоское, BNL соединение» на mariadb 5.5 - PullRequest
0 голосов
/ 10 июня 2019

У меня есть два экземпляра 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?

Любой совет будет оценен.

1 Ответ

0 голосов
/ 11 июня 2019

Проблема решена.

Были два разных набора символов. (UTF8 и LATIN1)

После ALTER TABLE TABLE2 CONVERT TO CHARACTER SET UTF8 работает нормально.

Спасибо, Рик Джеймс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...