Announcement

Collapse
No announcement yet.

Performance-Probleme

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Performance-Probleme

    Hallo,
    ich muß in meinem Programm immer wieder die Daten aus einer Fremd-Datenbank auslesen und in meine Access2000-Datenbank übernehmen:

    SQLStr = _
    "INSERT INTO MeineTabelle (MeinFeld1, MeinFeld2 ) " & _
    "SELECT FremdFeld1, FremdFeld2 " & _
    "FROM FremdTabelle " & _
    "WHERE FremdTestFeld1 NOT IN (SELECT MeinTestFeld1 FROM
    MeineTabelle ) "
    Mit diesem Statement finde ich alle neuen Datensätze in der Fremddatenbank und übernehmen sie in meine Tabelle.
    Zunächst hat alles wunderbar funktioneirt, jetzt aber, wo die Größe meiner Datenbank 110.000 KG erreicht hatte, bekomme ich zunehmend Performance-Probleme: was zunächst etwa 20 Sekunden geadauert hat, dauert jetzt bis 3 Minunten!!!! Dabei ist die Anzahl der zu übernehmenden Datensätze in etwa gleich geblieben.
    Weiß jemend einen Rat, wie ich die SQL-Abfrage anderes formulieren soll, damit es schneller geht???
    Gruß
    Christoph

  • #2
    Hi,

    zum einen sollte das Feld FremdTestFeld1 und MeinTestFeld1 indiziert sind.
    Des weiteren solltest Du versuchen das NOT IN durch ein NOT EXISTS zu ersetzen, wenn die Menge, die durch das Subselect ermittelt wird im Vergleich zur übergeordneten Menge sehr groß ist.

    jetzt aber, wo die Größe meiner Datenbank 110.000 KG erreicht hatte
    Dann solltest Du die DB mal auf Diät setzen .

    Alternativ kannst Du sie auch über Access mal komprimieren und überlegen, ob Du als Backend nicht eine richtige DB verwendest (z.B. PostgreSQL) und nur die Oberfläche in Access beläßt.

    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment

    Working...
    X