Ich habe eine Datenbank "Algebra" mit einer Tabelle "Fragen" mit 1.033.990 Zeilen. Die Datensätze haben das Attribut "Gelöst" INT. Ich habe eine einfache Frage
select count(*) from questions where solved = 0
Ich habe zwei Server mit ähnlichen CPUs. Auf beiden Servern sind die Tabellen gleich. (Datenbank ist eine Replik der Produktion). Sie sind auf SSDs. Ein Server hat Ubuntu 14.04 mit MySQL 5.5.49 und ein anderer Server hat Ubuntu 16.04 mit MySQL 5.7.12.
Das Problem ist, dass diese Abfrage unter MySQL 5.5 nur 0,009 Sekunden dauert, unter MySQL 5.7 jedoch 0,304 Sekunden. Welches ist 34-mal langsamer !!!
Die Abfragepläne sind ungefähr ähnlich:
Langsamer Server:
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
Schneller Server:
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
Warum dies der Fall sein könnte, verblüfft mich. Ich habe andere, kompliziertere Leistungsprobleme mit diesem neuen 5.7-Setup gesehen, aber dies ist das einfachste Problem, das es in Bezug auf die zugrunde liegende Abfrage zu lösen gilt.
Ich begreife, um die Erklärung dafür zu finden oder wo ich anfangen soll. my.cnf war zwischen den beiden in etwa ähnlich. Vorschläge werden dankbar angenommen.