Einzelnen Beitrag anzeigen

Mr.borland

Registriert seit: 16. Mai 2007
Ort: Plüderhausen
34 Beiträge
 
#1

große anzahl von Records löschen

  Alt 10. Jul 2007, 14:37
Datenbank: Nexus DB • Version: 2.0 • Zugriff über: Delphi 2006
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.
  Mit Zitat antworten Zitat