У меня есть база данных "алгебра" с таблицей "вопросы" с 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 был примерно одинаков между двумя. Любые предложения будут с благодарностью приняты.