Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: mehrere Tabellen gleichzietig löschen

  Alt 22. Dez 2009, 09:28
Hallo,

Zitat:
Im Access selbst gibt es den Punkt Datenbank komprimieren und reparieren
Dies führt die gewünschte Aktion aus.
Nur weiß ich nicht welches SQL Statemant dafür notwendig ist.
Es gibt kein SQL-Statement dafür.
Such einfach mal in Google "compact access database through ado".
Das liefert u.a.

1

Auf jeden Fall die englische Seite nehmen

Aber wie mein Vorschreiber schon gesagt hat,
macht es keinen Sinn, eine DB nach dem Löschen
von "ein paar Daten" zu komprimieren.
Eine DB ist auf Wachstum ausgelegt.
Durch Löschen entstandene Lücken werden durch die DB
größtenteils selber wieder mit neuen Daten aufgefüllt.

Und mache das ganze nicht an dem Wort größtenteils fest.


Dazu ist übrigens auch exclusiver Zugriff notwendig,
was in der Regel nicht der Fall ist.
Ausserdem sollte man vorher eine Sicherheitskopie anlegen.


Zum Komprimieren heisst:
Alle Daten werden auf 4 kB Seiten verteilt.
Eine Seite bekommt immer nur Daten einer Tabelle.
Werden z.B. 6 kB Daten eingetragen, ergibt das u.U. 2 Seiten Belegung,
also 8 kB (2*4 kB). Wird jetzt eines der Daten gelöscht und z.B. 1 kB neu hinzugrfügt,
werden immer noch 2 Seiten benutzt.
es würde aber 1 Seite reichen (3kB + 1kB).
Durch das Komprimieren werden die Daten in eine neue MDB in der optimalen Reihenfolge
(anderes Thema) geschrieben, es wird nur noch eine Seite benötigt (4 kB Daten, 4 kB Seite).
die MDB ist 4 kB kleiner.

Ausserdem werden die Indizes neu erzeugt (die liegen auch in 4 kB Seiten),
was den Speicherverbrauch auch reduzieren kann.


Heiko
Heiko
  Mit Zitat antworten Zitat