Frage

Wenn ich eine MS Access-Datenbank mit verknüpften Tabellen von zwei verschiedenen Datenbankservern habe (z. B. eine Tabelle von einer SQL Server-Datenbank und eine von einer Oracle-Datenbank) und eine Abfrage schreibe, die diese beiden Tabellen verknüpft, wie wird Access (oder die Jet-Engine) funktionieren? , schätze ich?) diese Abfrage bearbeiten?Wird es zuerst einige SELECTs für jede Tabelle ausgeben, um die Felder abzurufen, auf denen ich JOIN mache, herauszufinden, welche Zeilen übereinstimmen, und dann weitere SELECTs für diese Zeilen ausgeben?

War es hilfreich?

Lösung

Der Schlüssel, was zu verstehen ist diese:

Sind Sie fragen, eine Frage, dass Access / Jet optimieren kann, bevor er seine Anfrage an die beiden Server-Datenbanken sendet? Wenn Sie die Gesamtheit der beiden Tabellen sind Beitritt Jet müssen beide Tabellen anfordern, die hässlich sein würde.

Wenn auf der anderen Seite, können Sie Kriterien bereitzustellen, die eine oder beide Seiten des Join begrenzen, Access / Jet kann effizienter sein, und fordern Sie die gefilterten resultset anstelle der vollständigen Tabelle.

Andere Tipps

Ja, es kann zu ernsthaften Leistungsproblemen kommen.Ich mache so etwas seit Jahren.Oracle, SQL und DB2 – pfui.Manchmal musste ich einen Timer auf 5:00 Uhr einstellen, damit es fertig war, wenn ich um 7:00 Uhr ankam.

Wenn Ihr Datensatz aussagekräftig genug ist, ist es oft schneller, lokal eine Tabelle zu erstellen und die Daten dann zu verknüpfen.Achten Sie bei Remote-Datensätzen auch auf Passthroughs.

Nehmen wir zum Beispiel an, Sie ziehen alle Kunden von gestern aus der Oracle-Datenbank und alle Kundenkäufe aus der SQL-Datenbank.Nehmen wir an, Sie haben täglich durchschnittlich 100 Kunden, aber eine Liste von 30.000, und nehmen wir an, Ihre Produktliste umfasst 500.000.Sie könnten die Oracle-Datenbank nach Ihrer Liste mit 100 Kunden abfragen und sie dann wie folgt schreiben IN Anweisung in einer Passthrough-Abfrage an die SQL-Datenbank.Sie erhalten Ihre Daten fast sofort.

Oder wenn Ihre Recordsets sehr umfangreich sind, erstellen Sie lokale Tabellen der beiden IDs, vergleichen Sie sie lokal und rufen Sie dann einfach die erforderlichen Übereinstimmungen ab.

Es ist hässlich, aber Sie können sich buchstäblich Stunden sparen.

Das wäre meine Vermutung. Es hilft, wenn es Indizes auf beiden Seiten der schließen, aber, da weder Server volle Kontrolle über die Abfrage, weitere Abfrageoptimierung hat, ist nicht möglich.

Ich habe keine praktische Erfahrung Tabellen aus zwei verschiedenen Datensystemen verbinden. Allerdings, je nach den Anforderungen, etc, etc, können Sie es schneller finden SELECT-Abfragen nur mit den Datensätzen und Feldern erforderlich in Access-Tabellen und tun die endgültige beitreten und Abfrage in Access.

laufen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top