Eu tenho um banco de dados "álgebra" com uma tabela "perguntas" com 1.033.990 linhas. Os registros têm um atributo 'resolvido' que é INT. Eu tenho uma consulta simples
select count(*) from questions where solved = 0
Eu tenho dois servidores com CPUs semelhantes. Nos dois servidores, as tabelas são as mesmas. (banco de dados é uma réplica de produção). Eles estão em SSDs. Um servidor tem o Ubuntu 14.04 com o MySQL 5.5.49, e outro servidor tem o Ubuntu 16.04 com o MySQL 5.7.12.
O problema é que esta consulta leva apenas 0,009s no MySQL 5.5, mas leva 0.304s no MySQL 5.7. Que é 34 vezes mais lento !!!
Os planos de consulta são aproximadamente semelhantes:
Servidor lento:
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
Servidor rápido:
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
Por que isso pode ser o caso me deixa confuso. Vi outros problemas de desempenho mais complicados com essa nova configuração do 5.7, mas esse é o problema mais simples a ser resolvido em termos da consulta subjacente.
Eu estou tentando encontrar a explicação para isso ou por onde começar. my.cnf foi aproximadamente semelhante entre os dois. Qualquer sugestão seria aceita com gratidão.