Member
Beiträge: 11
Ort: Regensburg | PeterDoering - 20.02.13 16:04
Hallo,
jojogar - 19.02.13 19:47
Bringt es einen Vorteil, wenn ich für das Fremschlüsselfeld in einer 1:n - Beziehung ohne referenzielle Integrität einen Index erstelle? Oder macht das die Jet/ACE -Engine dann automatisch ?
Das macht nicht Jet/ACE, sondern Access, also das UI, für Felder mit entsprechenden Namen, siehe Options - Object Designers - AutoIndex ...
Das wäre neu, Tabellen, Primär- und Fremdschlüssel, Beziehungen usw. verwaltet in jedem Fall die Engine.
Was in Access in den Optionen steht, gilt für den Datenimport, um bei bestimmten Feldnamen automstisch einen Schlüssel anzulegen (was dann die Engine erledigt)
Wie haltet ihr das, bzw. hat jemand Erfahrungswerte zur Performance bei großen Datenmengen ?
Wenn auf einem Fremdschlüssel kein Index liegt, wird i.d.R. ein Table-Scan ausgeführt, was zu vermeiden ist. Dabei spielt die Datenmenge keine große Rolle, sondern mehr die Komplexität der Abfrage. Je besser das Datenmodell, d.h. je besser Indizes und Feldtypen gelegt sind, desto besser der Abfrageplan (Index Seek oder Index Scan, nicht Table Scan ) und damit die Performance.
Mir geht es ja hier nur um die Frage, ob es bei einer 'einfachen' Beziehung sinnvoll ist, selbt einen Index für den Fremdschlüssel zu erstellen. Natürlich spielen für die Performance einer Abfrage noch weitere Faktoren eine Rolle.
Habe mir inzwischen mal den Ausführungsplan einer Abfrage über beide Tabellen (Kunden-Buchungen) angesehen. Offenbar kann ACE auch ohne RI und Fremdschlüsselindex mit rushmore arbeiten, ohne und mit FK-Index, von table-scan ist nichts zu lesen.
Bleibt immer noch die Frage, wie sich das in der Praxis bei großen Datenmengen auswirkt und was ein manuell erstellter FK-Index ohne RI bringt ?
Den Ausführungsplan hängt als Textdatei an.
Gruß,
Josef
Anhänge ---------------- Ausfffhrungsplan_ohne_und_mit_RI.txt (2KB - 1 downloads)
|