So optimieren Sie die MySQL-Abfrage: Zählen von Kategorien und Unterkategorien mit einer einzelnen Abfrage aus zwei Tabellen

8

Ich brauche Hilfe, um diese MySQL-Abfrage für bessere und schnellere Leistung zu optimieren.

Hier ist das SQL FIDDLE mit Abfrage- und Tabellenstruktur.

im Grunde habe ich zwei Tabellen

tbl_category

%Vor%

tbl_auktion

%Vor%

Jetzt möchte ich alle Auktionen kategorieweise zählen, sowie, wenn eine Kategorie Unterkategorie hat, dann diese Auktion zur Hauptkategorie summieren

Ich habe unten Abfrage gemacht

%Vor%

Obwohl die obige Abfrage die erwarteten Ergebnisse zurückgibt Aber Ich denke, dass es möglicherweise einen optimierten Weg gibt, dies zu lösen. Bitte leiten Sie mich und schlagen Sie mir optimierte Abfrage vor.

Danke

    
diEcho 11.07.2012, 07:16
quelle

1 Antwort

3

Die Leistung des Testens ist der Dateiort, der von einem der GROUP BY s und / oder UNION ausgelöst wurde. Sie können die Abfrage ohne UNION wie folgt umschreiben:

%Vor%

Dies hat den gleichen Effekt (doppelte Zählung jeder Auktion, einmal unter ihrem Subcat, einmal unter der übergeordneten Katze) und EXPLAIN zeigt keinen filesort. Wenn dies der Fall ist, wenn die Daten größer werden, können Sie versuchen, den ORDER BY NULL Trick hinzuzufügen.

Auch wenn die Echtzeitgenauigkeit nicht sehr wichtig ist, aber die Abfrage häufig ausgeführt wird, sollten Sie das Ergebnis zwischenspeichern.

    
J. Miller 17.07.2012, 16:39
quelle

Tags und Links