hallo,
gibt es eine möglichkeit um eine große anzahl von Records sehr schnell zu löschen.
meine Tabele ist 40-100Mb groß mit bis zu 500000 Records, und möchte auf einen Schlag alle bis auf 1000 Records löschen.
zür erläuterung:
Es sind Messwerte die Für statistische Auswertung aufgesamelt werden. nun die Tabele wächst ständig
bis die Festplatte voll geschrieben ist. der USER kann aber so zusagen die datenmenge selber Reduziert.
Aber die Grundtabelle bleibt immer erhalten. nun das problem, es kann mal passieren das der USER 1 bis 2 wochen die Datenmenge nicht reduziert. ;-[
ich habe dann eine Menge Datensätze am hals, und mein system ist völligst ausgelastet.
Was ich bis her Versucht habe:
- for schleife : bis zu 1 minute
- Table SetRange : bis zu 20-25 sec.
- und der schnellste Algorithmus bis her ~10sec.
Delphi-Quellcode:
try
mwQuery.Close;
mwQuery.SQL.Clear;
mwQuery.SQL.Add(Format('delete from mwTable where ID>=%d and id<=%d',[valueStart,valueEnd]));
nxDatabase1.StartTransaction;
try
mwQuery.ExecSQL;
nxDatabase1.Commit;
except
nxDatabase1.Rollback;
end;
finally
mwQuery.Close;
end;
geht es noch schneller?! bin Dankebar für jede hilfe.