Добрый день. Обновился тут с MySQL 5.6 до MySQL 5.7 и через некоторое время вылезла неприятная проблема, в договоре вкладка Отчёты -> Inet, пытаюсь, например, сделать отчёт по истории сессий за прошлый месяц, если выбираю что-либо из "Типы трафика", например: "Входящий трафик", "Исходящий трафик", то запрос выполняется ну очень долго, чего раньше не наблюдалось. Если же "Тип трафика" не выбирать, а выбирать "Услуги", то всё работает нормально - быстро. Чуть изысканий. Собственно запрос:
Код: EXPLAIN SELECT detail.day, detail.trafficTypeId, SUM(detail.amount) FROM ( SELECT detail.day, detail.hour, detail.trafficTypeId, detail.amount FROM inet_session_log_17_201809 as log LEFT JOIN inet_session_log_detail_17_201809 as detail ON detail.sessionId=log.id LEFT JOIN inet_serv_17 as serv ON log.servId=serv.id WHERE (1 OR log.id=0) AND detail.trafficTypeId>0 AND detail.trafficTypeId IN (0,1,2) AND (0 OR serv.contractId=132667) AND (0 OR detail.day>=1) AND (0 OR detail.day<=30) AND detail.day>0 AND detail.trafficTypeId>0 UNION ALL SELECT detail.day, detail.hour, detail.trafficTypeId, detail.amount FROM inet_session_17 as log LEFT JOIN inet_session_detail_17 as detail ON detail.sessionId=log.id LEFT JOIN inet_connection_17 as c ON c.id=log.connectionId LEFT JOIN inet_serv_17 as serv ON c.servId=serv.id WHERE (1 OR log.id=0) AND detail.trafficTypeId>0 AND detail.trafficTypeId IN (0,1,2) AND (0 OR serv.contractId=132667) AND (0 OR detail.day>=1) AND (0 OR detail.day<=30) AND detail.day>0 AND detail.trafficTypeId>0 AND ((0 OR DATE(log.sessionStart)>='2018-09-01') AND (0 OR DATE(log.sessionStart)<='2018-09-30')) ) as detail GROUP BY day, trafficTypeId ORDER BY day
его EXPLAIN:
Код: +----+-------------+------------+-----------------------------------------------------------------------------------------------------+--------+-------------------+---------+---------+---------------------------+---------+----------+---------------------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+------------+-----------------------------------------------------------------------------------------------------+--------+-------------------+---------+---------+---------------------------+---------+----------+---------------------------------+ | 1 | PRIMARY | <derived2> | NULL | ALL | NULL | NULL | NULL | NULL | 565 | 100.00 | Using temporary; Using filesort | | 2 | DERIVED | detail | p0,p1,p2,p3,p4,p5,p6,p7 | ALL | PRIMARY | NULL | NULL | NULL | 8618987 | 0.12 | Using where | | 2 | DERIVED | log | p20180901,p20180904,p20180907,p20180910,p20180913,p20180916,p20180919,p20180922,p20180925,p20180928 | ref | PRIMARY | PRIMARY | 8 | internet.detail.sessionId | 1 | 100.00 | NULL | | 2 | DERIVED | serv | NULL | eq_ref | PRIMARY | PRIMARY | 4 | internet.log.servId | 1 | 5.00 | Using where | | 3 | UNION | log | p0,p1,p2,p3,p4,p5,p6,p7 | index | NULL | start | 5 | NULL | 13908 | 100.00 | Using where; Using index | | 3 | UNION | c | p0,p1,p2,p3,p4,p5,p6,p7 | ref | PRIMARY | PRIMARY | 8 | internet.log.connectionId | 1 | 100.00 | NULL | | 3 | UNION | serv | NULL | eq_ref | PRIMARY | PRIMARY | 4 | internet.c.servId | 1 | 5.00 | Using where | | 3 | UNION | detail | p0,p1,p2,p3,p4,p5,p6,p7 | ref | PRIMARY,sessionId | PRIMARY | 8 | internet.log.id | 36 | 0.14 | Using where | +----+-------------+------------+-----------------------------------------------------------------------------------------------------+--------+-------------------+---------+---------+---------------------------+---------+----------+---------------------------------+
(таблица текстом криво вставляется, так что прикрепил картинкой). Собственно судя по всему для первой части вложенного запроса не используются индексы откуда и все тормоза. Поиски в сети навели на optimizer_switch='derived_merge=off', но мне это не помогло. Может кто скажет что можно попробовать покрутить со своей стороны или разработчики посмотрят что можно поменять в запросе (индексах в таблицах)?
MySQL 5.7.23 Community inet: вер. 7.0.934 / 20.09.2018 22:11:40
Вложения: |
explain.png [ 19.17 КБ | Просмотров: 1655 ]
|
|