AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi INSERT in Access zu langsam?
Thema durchsuchen
Ansicht
Themen-Optionen

INSERT in Access zu langsam?

Offene Frage von "prelude247"
Ein Thema von prelude247 · begonnen am 26. Sep 2006 · letzter Beitrag vom 26. Sep 2006
Antwort Antwort
prelude247

Registriert seit: 1. Aug 2005
28 Beiträge
 
Delphi 7 Enterprise
 
#1

INSERT in Access zu langsam?

  Alt 26. Sep 2006, 19:35
Datenbank: Access • Version: 2003 • Zugriff über: ADO + Jet 4.0
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: INSERT in Access zu langsam?

  Alt 26. Sep 2006, 19:36
Vielleicht am beidem.
Versuch es mal mit einer Parametrisierten Abfrage.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von timog
timog

Registriert seit: 26. Sep 2006
Ort: Landkreis Oldenburg (Oldb)
117 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

Re: INSERT in Access zu langsam?

  Alt 26. Sep 2006, 20:51
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
Timo
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#4

Re: INSERT in Access zu langsam?

  Alt 26. Sep 2006, 21:31
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;
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: INSERT in Access zu langsam?

  Alt 26. Sep 2006, 21:51
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
prelude247

Registriert seit: 1. Aug 2005
28 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: INSERT in Access zu langsam?

  Alt 26. Sep 2006, 22:02
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: INSERT in Access zu langsam?

  Alt 26. Sep 2006, 22:09
Die üblichen Verdächtigem FireBird, MySQL, PosGresql, oder die "Expresse".
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 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