Eine Spalte neu nummerieren

Und wieder eine schöne SQL-Geschichte. In einem Update-Skript soll eine Spalte neu durchnummeriert werden.

Man könnte sich ein Skript schreiben das einfach per SELECT alle Elemente durchgeht, einen Zähler erhöht und mit UPDATE die entsprechende Spalte neu setzt. Nur hätte dies nach einem Test bei einer Tabelle mit 150.000 Einträgen etwa 10 Stunden gedauert. Das kann also keine ernsthafte Lösung darstellen.

Also die Suchmaschine meines Vertrauens befragt und siehe da, man lässt einfach anstatt in einem Skript die Datenbank einen Zähler erhöhen:

SET @c := 0;
UPDATE test SET platz = ( SELECT @c := @c + 1 ) ORDER BY id ASC;
//Erster Zählerwert ist 1

Und das ganze Skript benötigt nur noch 10 Minuten. Das nenne ich mal Performancegewinn.

Und wenn bei den Einträgen eine Spalte nur erhöht werden soll, dann geht das noch einfacher:

UPDATE test SET platz = platz + 1 WHERE ...

Auch nicht schlecht. Man lernt nie aus.


Anregungen und Hinweise sind herzlich willkommen, schreibt mir unter @code_hx


Büro

ImpactHub Dresden
Bayrische Straße 8
01069 Dresden

Post

Dr.-Ing. Stefan Urbansky
HxCode
Dresdner Landstr. 30e
01728 Bannewitz