Sortierung über mehrere Joins

Ich habe eine Reihe von Tabellen:

haupt:

ID | dingsID | info1 | info2

Index: PRIMARY (ID), INDEX (dingsID, info1)
Alle Spalten sind unsigned INT
dingsID ist fremdschlüssel zu

Dings:

ID | dings1 | dings2 | dings 3

Index: PRIMARY (ID)
Alle Spalten sind unsigned INT

Jetzt mache ich einen JOIN:

\<small\>SELECT haupt.info2,dings.dings1,dings.dings2,dings.dings3 
FROM haupt
INNER JOIN dings ON haupt.dingsID=dings.ID
WHERE haupt.info1 = 12\</small\>

Das funktioniert alles wunderbar, das läuft auf einem MySQL InnoDB mit 6.5Millionen Zeilen Ergebnismenge auch prima zügig in <1s ab.

Wenn ich jetzt aber sortiere,

ORDER BY \<small\>dings.dings1\</small\>, \<small\>haupt.info2, \</small\>\<small\>dings.dings2\</small\>

dann macht er ein Filesort, weil es keinen Index gibt, den ich benutzen kann. Das Ergebnis kommt erst nach 500s. Jetzt mag man sich streiten, ob so ein großes result Sinn macht oder nicht aber das ist jetzt mal nicht der Punkt, weil ich auf was anderes hinaus will.

Wie kann man denn die Indizes oder die Abfrage so verändern, dass die Abfrage eben keinen Filesort macht. Ich hab da schon recht lange drüber recherchiert aber konstruktives habe ich noch nicht dazu gefunden.

Weiß jemand Rat?

Günther