Mysql Mariadb b Mysql разный вывод команды explain и медленное выполнение запроса в Mariadb

mnk

Новичок
Базы одинаковые скопированы через mysqldump.
Есть запрос:
Код:
SELECT lpu_group1.id, lpu_group1.name_group, SUM(IF(sel1.locality=13,1,0)) AS col32, 
SUM(IF(sel1.locality=14,1,0)) AS col33, SUM(IF(sel1.sex=1,1,0)) AS col34, 
SUM(IF(sel1.sex=2,1,0)) AS col35, SUM(IF(sel1.sex=2 OR sel1.sex=1 OR sel1.sex=3,1,0)) AS col31
FROM lpu_group1
LEFT JOIN (
  SELECT live.lpuid, geo.codOut, live.locality, live.sex, IF(t.name_group IS NULL,0,t.name_group), 
  IF(t.id IS   NULL, 35,t.id) AS grid
  FROM live, geo
  LEFT JOIN lpu_group1 t ON (geo.codOut LIKE CONCAT(t.codOut,"%"))
  WHERE geo.uniCod = live.residence AND live.date_birth >= '2015-01-01'  
  AND live.date_birth <= '2015-05-08 23:59:59' AND live.del=0
) AS sel1 ON (sel1.grid = lpu_group1.id)
GROUP BY lpu_group1.id
ORDER BY lpu_group1.num, lpu_group1.name_group
Вот выводы команды explain от этого запроса.
10.0.17-MariaDB
Код:
+------+-------------+------------+--------+----------------------+---------+---------+---------------------+-------+---------------------------------+
| id   | select_type | table      | type   | possible_keys        | key     | key_len | ref                 | rows  | Extra                           |
+------+-------------+------------+--------+----------------------+---------+---------+---------------------+-------+---------------------------------+
|    1 | SIMPLE      | lpu_group1 | index  | NULL                 | PRIMARY | 4       | NULL                |    29 | Using temporary; Using filesort |
|    1 | SIMPLE      | live       | ALL    | residence,date_birth | NULL    | NULL    | NULL                | 51878 | Using where                     |
|    1 | SIMPLE      | geo        | eq_ref | PRIMARY              | PRIMARY | 4       | baby.live.residence |     1 |                                 |
|    1 | SIMPLE      | t          | index  | NULL                 | codOut  | 54      | NULL                |    29 | Using where; Using index        |
+------+-------------+------------+--------+----------------------+---------+---------+---------------------+-------+---------------------------------+
Мysql 5.6.24
Код:
+----+-------------+------------+--------+----------------------+-------------+---------+---------------------+------+----------------------------------------------------+
| id | select_type | table      | type   | possible_keys        | key         | key_len | ref                 | rows | Extra                                              |
+----+-------------+------------+--------+----------------------+-------------+---------+---------------------+------+----------------------------------------------------+
|  1 | PRIMARY     | lpu_group1 | index  | PRIMARY,codOut       | PRIMARY     | 4       | NULL                |   29 | Using temporary; Using filesort                    |
|  1 | PRIMARY     | <derived2> | ref    | <auto_key0>          | <auto_key0> | 9       | baby.lpu_group1.id  | 2158 | Using where                                        |
|  2 | DERIVED     | live       | range  | residence,date_birth | date_birth  | 6       | NULL                | 7442 | Using index condition; Using where                 |
|  2 | DERIVED     | geo        | eq_ref | PRIMARY              | PRIMARY     | 4       | baby.live.residence |    1 | NULL                                               |
|  2 | DERIVED     | t          | ALL    | NULL                 | NULL        | NULL    | NULL                |   29 | Using where; Using join buffer (Block Nested Loop) |
+----+-------------+------------+--------+----------------------+-------------+---------+---------------------+------+----------------------------------------------------+
И естественно на mysql этот запрос выполняется за 0,08 сек, а на mariadb 4.66 сек
Почему такая ерунда и что можно сделать. Перешли на mariadb и такие проблемы.
Базы и ключи полностью одинаковые. Комп под mariadb намного мощнее, чем под mysql.
 

WMix

герр M:)ller
Партнер клуба
и че? ну по разному ищут, но мария вроде нормально справилась... у тебя какая проблема?
 

mnk

Новичок
те разница в 50 раз - это норм:eek:. Это таблица пока 51к строк. А когда будет 200k.
 

WMix

герр M:)ller
Партнер клуба
а что ты хотел получить от ?
Код:
SELECT LEFT JOIN (
    SELECT LEFT JOIN ON LIKE
) GROUP BY
подсказывает что
possible_keys: residence,date_birth
но это так спички, лучше над запросом думать, промежуточную табличку сделать
 

mnk

Новичок
Индексы на поля date_birth и residence уже были.
Использование
FROM live FORCE INDEX (date_birth)
тоже ничего не дало.
Похоже, что для данного запроса что то не так с оптимизатором запросов самой базы. Тк даже отключение кэша дают тот же результат. Те mysql выполняет запрос намного быстрее.
 

confguru

ExAdmin
Команда форума
Во первых при
Using temporary; Using filesort
ты еще измеряешь скорость диска а не базы.. :)

Добавь SQL_NO_CACHE для чистоты эксперимента..
 

mnk

Новичок
Пожалуйста, запросы с с SQL_NO_CACHЕ
mysql - 0,08 sec
mariaDB - 3,181 sec
Если период отчета увеличить
mysql - 0,52 sec
mariaDB - 17,812 sec
Такая разница не может быть из-за скорости диска.
 
Последнее редактирование:
Сверху