ArticleSQL - Spalte 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.

Keywords

SQL
Stefan Urbansky
HxCode
Dr.-Ing. Stefan Urbansky

Sie interessieren sich für unsere Leistungen oder wollen ein eigenes Projekt starten?