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