Discussion:
D2010 und Access langsamer Zugriff
(zu alt für eine Antwort)
Stefan Koschke
2011-03-15 07:18:31 UTC
Permalink
Hallo zusammen,

bei älteren Delphi-Versionen, hoffe ich mich zu erinnern, mußte man bei
der Installation die Version von Office angeben, die unterstützt werden
soll.
Bei der Installation von D2010 kann ich mich nicht an so eine Auswahl
erinnern, oder liege ich da falsch?

Ich habe nämlich nun folgendes Problem:
Mein Programm erzeugt auf Basis einer leeren MDB durch Kopieren und
Anlegen von Tabellen die gewünschten Datenbanken.
Der Zugriff auf diese ist nun nach Austausch der leeren Grunddatenbank
erschreckend (etwa 10 fache Zeit) langsamer geworden.

Der Zugriff auf früher erstellte (alte) Datenbanken geht wie früher auch
sehr schnell.

Wo kann die Ursache liegen?

Was mir auffällt wenn ich alte / neue mdb's mit Access ansehe, bei alten
öffnet sich die Datenbank sofort, bei neuen kommt eine Meldung "Sie
möchten mithilfe von "Tabellen und und damit verbundenen Sichten"
Objekte in der Datenbank gruppieren. In Access müssen die
Informationenzu den Objektabhängigkeiten aktualisiert werden, um Gruppen
zu erstellen..."
Möchten Sie den Vorgang fortsetzen? OK/Abbrechen

Wie bekommme ich das weg, in den leeren Datenbanken werden die Tabellen
mit CREATE TABLE... so wie auch früher in meinem Programm ohne
Änderungen erzeugt.

Ciao
Stefan
Soeren Muehlbauer
2011-03-18 15:49:40 UTC
Permalink
Hi,
Post by Stefan Koschke
Der Zugriff auf diese ist nun nach Austausch der leeren Grunddatenbank
erschreckend (etwa 10 fache Zeit) langsamer geworden.
Was ist mit Zugriff gemeint? Lesen, Schreiben oder beides?
Post by Stefan Koschke
Der Zugriff auf früher erstellte (alte) Datenbanken geht wie früher auch
sehr schnell.
Wo kann die Ursache liegen?
Fehlende Indexe sind häufig ein Grund für schlechte Leseleistung.
Vielleicht hast Du auch unbeabsichtigt Beziehungen zwischen den Tabellen
erzeugt. Access hat auch sowas wie referenzielle Integrität (also
Löschweitergabe und so weiter).
Post by Stefan Koschke
Wie bekommme ich das weg, in den leeren Datenbanken werden die Tabellen
mit CREATE TABLE... so wie auch früher in meinem Programm ohne
Änderungen erzeugt.
Wie genau?

Sören
Stefan Koschke
2011-03-21 08:17:33 UTC
Permalink
Hallo Sören,
Post by Soeren Muehlbauer
Hi,
Post by Stefan Koschke
Der Zugriff auf diese ist nun nach Austausch der leeren Grunddatenbank
erschreckend (etwa 10 fache Zeit) langsamer geworden.
Was ist mit Zugriff gemeint? Lesen, Schreiben oder beides?
beides ist sehr langsam
Post by Soeren Muehlbauer
Post by Stefan Koschke
Der Zugriff auf früher erstellte (alte) Datenbanken geht wie früher auch
sehr schnell.
Wo kann die Ursache liegen?
Fehlende Indexe sind häufig ein Grund für schlechte Leseleistung.
Vielleicht hast Du auch unbeabsichtigt Beziehungen zwischen den Tabellen
erzeugt. Access hat auch sowas wie referenzielle Integrität (also
Löschweitergabe und so weiter).
Erzeugt wurde die leere Datenbank direkt in Access (2007) und danach,
ohne irgendwelche Tabellen anzulegen, gespeichert.

Dabei benutze ich "Speichern unter" und wähle dann Access 2002..2003
Datenbank.
Diese werstellte DB ist langsam.
Das Gleiche wie oben, aber als Access 2000 Datenbank gespeicnert läuft
flott.

Die Datenbankzugriffe im Programm laufen über den Connectionstring der
TAdoQuerys per Microsoft Jet 4.0 OLE DB Provider.
Post by Soeren Muehlbauer
Post by Stefan Koschke
Wie bekommme ich das weg, in den leeren Datenbanken werden die Tabellen
mit CREATE TABLE... so wie auch früher in meinem Programm ohne
Änderungen erzeugt.
Wie genau?
query.sql.text := 'CREATE TABLE ' + 'Excelregister' + ' (' +
' [ID] integer IDENTITY (1, 1) ,' +
' [Medium] Text(3) ,' +
' [Kanal] Text(3) ,' +
' [OBIS] Text(15) ,' +
' [Vorwert] Text(3) ,' +
' [Kommentar] Text(255)' +
')';
query.ExecSQL;

es gibt generell in den Datenbanken nur Tabellen mit Feldern ohne
jegliche Verknüpfungen der Tabellen untereinander.

Wo ist der Unterschied zwischen der schnellen Access 2000 und der
langsamen Access 2003/2003-Variante?

Ciao
Stefan

Loading...