Ich habe meine MySQL-Datenbank von Version 5.6 auf Version 5.7 umgestellt. Jetzt habe ich ein Performance-Problem.
Spezifische Anweisungen werden in beiden Versionen ausgeführt und ich habe bemerkt, dass 5,7 langsamer ist. Vor allem bei großen Datenmengen.
Selbst eine einfache Select-Anweisung ist viel langsamer
%Vor%In meiner Anwendung habe ich komplexere Anweisungen, die viel mehr Zeit benötigen, um ausgeführt zu werden, so dass sie unbrauchbar werden.
Ich habe auch bemerkt, dass die Feldanzahl meiner Tabelle in 5.7, aber nicht in 5.6 zählt.
Die Konfigurationswerte in der my.ini haben sich nicht geändert.
Um dieses Problem zu testen, können Sie den folgenden Code verwenden:
%Vor%Hier meine Aussage:
%Vor%BEARBEITEN
EXPLAIN-Ergebnisse:
5.6:
%Vor%5.7
%Vor%My.ini:
%Vor%Ohne SQLFiddle kann ich nicht sicher sein, aber ich denke, dass Ihr Problem durch eine ändern Sie die Performance-Einstellung von" group by "in 5.7 .
Ich bin mir nicht ganz sicher, aber ich denke, das bedeutet, dass die Abfrageoptimierer-Entscheidungen, die früher Sinn ergaben, nicht mehr so gut funktionieren. In Ihrer Beispielabfrage zeigt beispielsweise EXPLAIN, dass die Abfrage einen Index für die kleinere Tabelle verwendet.
In dem Code, den Sie gepostet haben, glaube ich nicht, dass die Klausel "group by" viel bewirkt - Sie rufen immer noch jede Zeile ab, weil sysdate eindeutig sein sollte.
In diesem speziellen Fall erhalten Sie möglicherweise bessere Ergebnisse, wenn Sie einen Index für den Tabellentest mit den Spalten t_sachbearb, atest.sys_uid, t_datum DESC und t_zeit DESC erstellen. Dies sollte dazu führen, dass der Abfrageoptimierer den Index für die größere Spalte auswählt und diesen zum Filtern und Sortieren verwendet.
Ich würde das Umschreiben ohne Gruppe erwägen, um "eindeutige" Anforderungen zu unterstützen, wo es möglich ist.
Wenn nicht, müssen Sie möglicherweise den einzelnen "EXPLAIN" -Ausgang betrachten und die Indizes optimieren.
Tags und Links mysql database performance mysql-5.7 mysql-5.6