Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi INSERT in Access zu langsam? (https://www.delphipraxis.net/77912-insert-access-zu-langsam.html)

prelude247 26. Sep 2006 18:35

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:
While not fertig do
begin
  Daten:=SammleDaten();
  Query.SQL.TEXT:='INSERT INTO TABELLE (Daten) VALUES('+Daten+')';
  Query.ExecSQL;
end;
Gibt es eine Möglichkeit den Vorgang zu beschleunigen? Liegt es evtl. am Code oder eher an Access?

MfG
Prelude247

mkinzler 26. Sep 2006 18:36

Re: INSERT in Access zu langsam?
 
Vielleicht am beidem.
Versuch es mal mit einer Parametrisierten Abfrage.

timog 26. Sep 2006 19:51

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

jensw_2000 26. Sep 2006 20:31

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;

alzaimar 26. Sep 2006 20:51

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.

prelude247 26. Sep 2006 21:02

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

mkinzler 26. Sep 2006 21:09

Re: INSERT in Access zu langsam?
 
Die üblichen Verdächtigem FireBird, MySQL, PosGresql, oder die "Expresse".


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz