Hallo zusammen!
ich habe ein Delphi Programm, mit dem ich innerhalb eines Transaktionsblockes mit "Starttransaktion" und "Commit", Daten in eine Tabelle des SQL Server 2005 oder SQL 2008 Express schreibe.
Ich verwende hierbei ein Borland Delphi tTable Objekt mit tDatabase und einer ODBC Verknüpfung. Im Prgramm werden die Daten mit Append und Post geschrieben.
StartTransaktion
__while Für_alle_Datensätze do begin
____Append;
____FieldByName('datum').asDateTime := xyz;
____....
____Post;
__end;
Commit
Nun das Problem:
Die Zieltabelle hat keinen Index - 5000 Datensätze anhängen dauert ca. 1 Sekunde.
Hat die Tabelle einen Index (Feld Datum von Typ tDateTime), dauert das Einfügen der gleichen Anzahl Datensätze 5 Minunten.
Dabei ist der Index als "gruppirt" oder "nicht gruppiert" angelegt - macht keine Unterschied.
Was muss ich machen, dass der SQL Server trotz des definierten Index beim Append schneller wird?
ich habe ein Delphi Programm, mit dem ich innerhalb eines Transaktionsblockes mit "Starttransaktion" und "Commit", Daten in eine Tabelle des SQL Server 2005 oder SQL 2008 Express schreibe.
Ich verwende hierbei ein Borland Delphi tTable Objekt mit tDatabase und einer ODBC Verknüpfung. Im Prgramm werden die Daten mit Append und Post geschrieben.
StartTransaktion
__while Für_alle_Datensätze do begin
____Append;
____FieldByName('datum').asDateTime := xyz;
____....
____Post;
__end;
Commit
Nun das Problem:
Die Zieltabelle hat keinen Index - 5000 Datensätze anhängen dauert ca. 1 Sekunde.
Hat die Tabelle einen Index (Feld Datum von Typ tDateTime), dauert das Einfügen der gleichen Anzahl Datensätze 5 Minunten.
Dabei ist der Index als "gruppirt" oder "nicht gruppiert" angelegt - macht keine Unterschied.
Was muss ich machen, dass der SQL Server trotz des definierten Index beim Append schneller wird?
Comment