Was spricht gegen einen Index auf den Spalten moved_id, host_id? Das würde schnellstmöglich alle gewünschten Zeilen liefern, die mysql, dann noch nett sortiert zurückgibt. Oder meinst du es so, dass du so viele Zeilen durch den Index zwar schnell zurückbekommst, die Sortierung aber so lange dauert?mgutt hat geschrieben:Das ist die Abfrage:bloddy newbie hat geschrieben:Wie schaut die Abfrage aus?moved_id schließt Kopien des topics aus. host_id bestimmt die Domain auf der das topic veröffentlicht wurde (Multihosting) und last_time ist eben die Sortierung nach Aktualität. Indexe liegen auf moved_id, host_id und last_time. MySQL nutzt an dieser Stelle host_id. Getestet habe ich auch mehrspaltige, aber das Problem ist hier einfach die Anzahl der Zeilen aus dem WHERE-Teil, der dann filesort richtig zum arbeiten bringt (ab 100.000 Zeilen beginnt das Problem).Code: Alles auswählen
SELECT * FROM topics WHERE moved_id = 0 AND host_id = 1 ORDER BY last_time DESC LIMIT 10
Warum funktioniert dann ein Index über die drei Spalten nicht? Hier müssen natürlich die where-Spalten am Anfang und die order by als letzte stehen. Aber eigentlich müßte MySQL dann sich die Daten perfekt sortiert aus dem Index holen können.