Mysql select - падение производительности после добавления второго соединения - PullRequest
0 голосов
/ 28 сентября 2018

После SELECT работал нормально, пока я не добавил второй LEFT JOIN.Теперь время отображения таблицы составляет 18 с.

Отлично работает с обоими соединениями, когда я пропускаю group_concat и GROUP BY.Создание представления не помогло.Между таблицей 1 и таблицей 2 существует отношение один ко многим, и поэтому мне нужно использовать group_concat, чтобы в каждой строке было уникальное значение TICKETNO.

Можно ли написать этот запрос, чтобы выполнить его быстрее?Спасибо.

SELECT table1.TICKETNO,
table2.STARTTIMESTAMP,
group_concat(table2.ACTION),
table1.COMPLETION,
table3.MEASURE
FROM table1
LEFT JOIN table2 ON (table1.TICKETNO=table2.TICKETNO)
LEFT JOIN table3 ON (table1.ERRORCODE=table3.ERRCODE)
GROUP BY table1.TICKETNO

индексы:

+----------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table          | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+----------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| table1         |          0 | PRIMARY  |            1 | TICKETNO    | A         |       21894 |     NULL | NULL   |      | BTREE      |         |               |
+----------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+



+-------------------+------------+----------+--------------+----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table             | Non_unique | Key_name | Seq_in_index | Column_name    | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------------------+------------+----------+--------------+----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| table2            |          0 | PRIMARY  |            1 | TICKETNO       | A         |       76110 |     NULL | NULL   |      | BTREE      |         |               |
| table2            |          0 | PRIMARY  |            2 | STARTTIMESTAMP | A         |       76110 |     NULL | NULL   |      | BTREE      |         |               |
+-------------------+------------+----------+--------------+----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+


+----------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table          | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+----------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| table3         |          0 | PRIMARY  |            1 | SPRAS       | A         |           6 |     NULL | NULL   |      | BTREE      |         |               |
| table3         |          0 | PRIMARY  |            2 | ERRCODE     | A         |        1138 |     NULL | NULL   |      | BTREE      |         |               |
+----------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

Вот ОБЪЯСНЕНИЕ к моему запросу:

+------+-------------+-------------------+------+---------------+---------+---------+------------------------------------+-------+-------------------------------------------------+
| id   | select_type | table             | type | possible_keys | key     | key_len | ref                                | rows  | Extra                                           |
+------+-------------+-------------------+------+---------------+---------+---------+------------------------------------+-------+-------------------------------------------------+
|    1 | SIMPLE      | table1            | ALL  | NULL          | NULL    | NULL    | NULL                               | 21894 | Using temporary; Using filesort                 |
|    1 | SIMPLE      | table2            | ref  | PRIMARY       | PRIMARY | 8       | mydb.table1.TICKETNO               |     1 |                                                 |
|    1 | SIMPLE      | table3            | ALL  | NULL          | NULL    | NULL    | NULL                               |  1138 | Using where; Using join buffer (flat, BNL join) |
+------+-------------+-------------------+------+---------------+---------+---------+------------------------------------+-------+-------------------------------------------------+

1 Ответ

0 голосов
/ 28 сентября 2018

Хотя это медленно, и вы не предоставили других подробностей, я бы просто спросил, есть ли у вас индексы, которые могут помочь лучше, включая:

table     index
table1    (ticketno, completion)
table2    (ticketno, action)
table3    (errcode, measure)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...