Einzelnen Beitrag anzeigen

Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Viele Datensätze nacheinander erstellen

  Alt 24. Jan 2008, 11:18
Also der SQL Server ist dafür bekannt, sehr schnell so viel wie möglich Speicher für sich in Anspruch zu nehmen. Das mit den 300MB kann also durchaus sein.

Es muss aber gewusst sein, dass ein Insert in eine Tabelle wo bereits viiiiiile Datensätze vorhanden sind, langsamer ist als in eine leere Tabelle einzufügen. Hier mal einige Tipps, an welchen Ecken man schrauben kann:
  • Liegen einige Indizes auf der Tabelle, so kanns z.B. von grossem Vorteil sein, dies erst mal wieder zu entfernen, und nach dem Einfügen der DS wie neu zu erstellen.
  • Auch bietet der SQL Server einen BulkInsert Mechanismus an. Such mal in der T-SQL Hilfe nach Bulk Insert.
  • Es wird auch schon helfen, anstatt über eine Table Komponente zu gehen direkt den SQL Insert Befehl in einer Query Komponente zu formulieren, und diesen dann mit ExecSQL auszuführen. Das erspart den Overhead lokal im Dataset.
  • Du könntest auch ein insert into SQL Befehl nutzen. Warum musst du lokal iterieren, oder ist eine der beiden Tabellen nicht aus einem MSSQL Server
[*]Eventuell ist eine Stored Procedure hilfreich. Du kannst auch intern im SQL Server mit temporären Tabellen arbeiten, die dann nur im Speicher vorliegen. Ein Insert into aus dieser temporären Tabelle sollte wesentlich schneller sein, als im Delphi als zu durchlaufen, und jeden Insert einzeln aufzurufen.[/list]
  Mit Zitat antworten Zitat