UPDATE in Kombination mit ORDER BY sehr langsam
Hallo,
ich nutze zur Berechnung für eine Art Highscore-Liste die Funktionen, um innerhalb eines UPDATE-Statements nach verschiedenen Spalten zu sortieren und gleichzeitig eine Spalte mit einer Variable zu aktualisieren.
Das Statement sieht so aus:
UPDATE highscores SET positionAlt = position, position = (SELECT @x := @x + 1) WHERE spielmodus=1 ORDER BY siege DESC, niederlagen ASC, unentschieden DESC
@x wird natürlich vorher noch mit 0 initialisiert.
Das Statement funktioniert im Prinzip genau wie gewünscht und tut genau das, was ich möcht, ist jedoch seeehr langsam. Es lief soeben gerade über 30 Minuten lang auf einem Server mit Quad-Core Opteron und 8GB RAM.
Die betroffene Tabelle enthält rund 1,1 Mio Datensätze und durch die Einschränkung mit WHERE sind davon knapp die Hälfte betroffen.
Wie kann dieses Statement beschleunigt werden?
Würde u.U. ein Index auf eine oder mehrere Spalten helfen?
Oder evtl. ein DISABLE KEYS?
Es handelt sich um eine InnoDB-Tabelle, MySQL läuft in der Server version 5.1.61 und es wird täglich ein OPTIMIZE TABLE ausgeführt.