![]() |
Datenbank: Access • Version: 2003 • Zugriff über: ADO + Jet 4.0
INSERT in Access zu langsam?
Hallo DPler!
In meinem Projekt sollen ca. 50000 Datensätze in eine Access DB eingefügt werden. Beim Testen meines Programms ist mir aufgefallen, dass die Verarbeitung sehr träge ist. Für 50000 Datensätze (15 Byte pro DS) Dauern ca. 4 min.
Delphi-Quellcode:
Gibt es eine Möglichkeit den Vorgang zu beschleunigen? Liegt es evtl. am Code oder eher an Access?
While not fertig do
begin Daten:=SammleDaten(); Query.SQL.TEXT:='INSERT INTO TABELLE (Daten) VALUES('+Daten+')'; Query.ExecSQL; end; MfG Prelude247 |
Re: INSERT in Access zu langsam?
Vielleicht am beidem.
Versuch es mal mit einer Parametrisierten Abfrage. |
Re: INSERT in Access zu langsam?
Hi Prelude247,
die Performance ist in der Tat nicht ganz so dolle. Manchmal kann ein Index auf ein oder mehrere Felder das Ganze ziemlich langsam machen. Könnte das eine mögliche Ursache sein? Viele Grüße Timo |
Re: INSERT in Access zu langsam?
Hängt an der Query eventuell eine Datasource gefolgt von datensensitiven Steuerelementen?
Dann versuch es mal so ...
Delphi-Quellcode:
Query.DisableControls;
try While not fertig do begin Daten:=SammleDaten(); Query.SQL.TEXT:='INSERT INTO TABELLE (Daten) VALUES('+Daten+')'; Query.ExecSQL; end; finally Query.EnableControls; end; |
Re: INSERT in Access zu langsam?
Access ist nun mal langsam. Ich habe es noch nicht probiert, aber Du könntest es mal mit einer Transaktion versuchen. Das ist ein billiger, aber effektiver Trick. Du startest eine Transaktion und führst ein Commit alle 1000 oder 5000 Datensätze aus.
Weiterhin solltest Du alle Tipps der Mitdenker hier befolgen (parametrisiert, vor allen Dingen keine Index). Unterm Strich bleibt nur die Erkenntnis, das man für Aufgaben dieser Art nun mal eine echte DB benötigt, und nicht so eine Notlösung wie Access. |
Re: INSERT in Access zu langsam?
Danke erstmal für eure rege Teilnahme! :)
Da auch mit eurer Hilfe sich die ganze Sache nicht wirklich beschleunigen ließ, werde ich wohl oder übel auf eine andere DB zurückgreifen müssen. Aber welche DB ist für solch eine Aufgabe die beste? Ich suche auf jeden Fall was kostenloses! Was könnt ihr mir empfehlen? Welche Nachteile haben andere DB's? MfG Prelude247 |
Re: INSERT in Access zu langsam?
Die üblichen Verdächtigem FireBird, MySQL, PosGresql, oder die "Expresse".
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz