MySQL Forums
Forum List  »  German

UPDATE in Kombination mit ORDER BY sehr langsam
Posted by: Tobias Kuehne
Date: July 30, 2012 04:30AM

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.

Options: ReplyQuote




Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.