doppelte Datensätze löschen

07/10/2008 - 11:12 von Uwe Domschke | Report spam
Ich habe ein Programm zum speichern von Messdaten. Diese sind haben
geràt,zeit,messwert. Nun muss ich verhindern, dass Messwerte doppelt
gespeichert werden (geràt,zeit).

IF (Select Top 1 id_mw From Messwerte Where geraet=@DevNr AND
zeitpkt=@datm) is NULL BEGIN Insert Into Messwerte (geraet,wert,zeitpkt)
Values (@DevNr,@MW,@datm) End

Die ganze Sache ist nur sehr langsam (15.000 DS in 20 min). Daher die Idee,
erst mal alle einspeichern und im Nachgang die doppelten DS löschen. Gibt es
dafür eine elegante Methode?

Uwe
 

Lesen sie die antworten

#1 Frank Kalis
07/10/2008 - 11:39 | Warnen spam
On 7 Okt., 11:12, "Uwe Domschke" wrote:
Ich habe ein Programm zum speichern von Messdaten. Diese sind haben
geràt,zeit,messwert. Nun muss ich verhindern, dass Messwerte doppelt
gespeichert werden (geràt,zeit).




IF (Select Top 1 id_mw From Messwerte Where geraet=@DevNr  AND
zeitpkt=@datm) is NULL BEGIN Insert Into Messwerte (geraet,wert,zeitpkt)
Values (@DevNr,@MW,@datm) End




IF NOT EXISTS(...) wàre wahrscheinlich besser geeignet. Schliesslich
interessiert Dich ja nur die Tatsache dass kein solcher DS existiert,
nicht dessen Werte.

Die ganze Sache ist nur sehr langsam (15.000 DS in 20 min). Daher die Idee,
erst mal alle einspeichern und im Nachgang die doppelten DS löschen. Gibt es
dafür eine elegante Methode?




Mit einer àhnlichen Systematik lade ich mehr als 100.000 in weniger
als 1 Minute. Fehlt da vielleicht ein passender Index?
Wenn Du nicht zur Laufzeit Duplikate verhindern kannst, kannst Du
einen Job laufen lassen, der intervallmàssig Duplikate entfernt.
Frank Kalis
Microsoft SQL Server MVP
Webmaster: http://www.insidesql.org

Ähnliche fragen