Ich versuche diese Abfrage zu optimieren:
%Vor%Die Größe der Tabellen ist 38k Zeilen, und 31k und mysql verwendet "filesort", so dass es ziemlich langsam wird. Ich habe versucht, verschiedene Indizes zu verwenden, kein Glück.
%Vor% %Vor%Welche Art von Index muss ich definieren, um mysql mit filesort zu vermeiden? Ist es möglich, wenn das Auftragsfeld nicht in der where-Klausel ist?
Aktualisierung: Profilergebnisse:
%Vor%update2:
Real-Abfrage (einige mehr boolesche Felder, mehr nutzlose Indizes)
%Vor%Leeres Set (1,25 Sek.)
Ohne ORDER BY - 0.01s.
%Vor%LÖSUNG
Das ist alles!
Sie müssten ein wenig denormalisieren und das posts.created_at-Feld in die post_tags-Tabelle kopieren (ich nannte es post_created_at, Sie könnten es so nennen, wie Sie wollen):
%Vor%und fügen Sie dann einen Index zu posts_tags auf
hinzu %Vor%Das ermöglicht der Abfrage, alle Posts für ein Tag in der richtigen Reihenfolge ohne filesort zu erhalten.
Tags und Links optimization mysql join sql-order-by filesort