Mysql 5.7 против 5.5: простой запрос выполняется в 50 раз дольше

Mysql 5.7 против 5.5: простой запрос выполняется в 50 раз дольше

У меня есть база данных "алгебра" с таблицей "вопросы" с 1 033 990 строками. Записи имеют атрибут "решено", который равен INT. У меня есть простой запрос

select count(*) from questions where solved = 0

У меня два сервера с похожими процессорами. На обоих серверах таблицы одинаковые. (база данных — копия рабочей). Они на SSD. На одном сервере Ubuntu 14.04 с MySQL 5.5.49, а на другом — Ubuntu 16.04 с MySQL 5.7.12.

Проблема в том, что этот запрос занимает всего 0,009 с на MySQL 5.5, но занимает 0,304 с на MySQL 5.7. Что в 34 раза МЕДЛЕННЕЕ!!!

Планы запросов примерно похожи:

Медленный сервер:

id      select_type     table   partitions      type    possible_keys   key     key_len ref     rows    filtered        Extra
1       SIMPLE  questions       NULL    index   NULL    by_topic_solved 97      NULL    1033990 10.00   Using where; Using index

Быстрый сервер:

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  questions   index   NULL    by_topic_solved 97  NULL    1033989 Using where; Using index

Почему это может быть так, меня сбивает с толку. Я видел и другие, более сложные проблемы с производительностью с этой новой настройкой 5.7, но это самая простая проблема, с которой нужно бороться с точки зрения базового запроса.

Я пытаюсь найти объяснение этому или с чего начать. my.cnf был примерно похож между ними. Любые предложения будут приняты с благодарностью.

решение1

Я полностью понял эту проблему. Изменилось то, что в новом mysql кэш запросов отключен из-за настройки по умолчанию query_cache_type = OFF. Когда я снова включил кэш запросов, установив query_cache_type=1, производительность сразу же улучшилась. Поскольку мой сайт использует в 100 раз больше запросов SELECT, чем запросов INSERT/UPDATE, использование кэша запросов имеет для меня смысл. Спасибо, что указали мне на это направление!

Связанный контент