Access Indizes

Lohnt es sich Indizes zu erstellen ?
AB welcher Datenmenge macht sich das schnellere Suchen und SOrtieren bemerkbar oder ist es nur ein Relikt aus der Zeit wo die Rechner Leistungsschwacher waren ?

Hallo bernyhb,

Lohnt es sich Indizes zu erstellen ?

ja

AB welcher Datenmenge macht sich das schnellere Suchen und
SOrtieren bemerkbar

Das hat nichts mit der Datenmenge zu tun.

oder ist es nur ein Relikt aus der Zeit wo
die Rechner Leistungsschwacher waren ?

nein, das ist bei einigen Dingen in Access zwingend notwendig:
z.B. beim Primärschlüssel, oder bei der Verknüpfung von Tabellen

Grüße aus Essen
Wolfgang

nein, das ist bei einigen Dingen in Access zwingend notwendig:
z.B. beim Primärschlüssel, oder bei der Verknüpfung von
Tabellen

Grüße aus Essen
Wolfgang

Bei den Zwingenden Dingen ist es mir klar, aber wie ist es mit Indizies die ich manuel zusätzlich eingebe.
Bei einer Datenbank von 120 Einträgen macht es sich zumindest nicht bemerkbar wenn ich z.B. für den Nachnamen ein Index setze, von daher würde ich gerne wissen ab wann es sich lohnt, es sich bemerkbar macht oder ob es außer der geschwindigkeit noch andere vorteile gibt.

Bei einer Datenbank von 120 Einträgen macht es sich zumindest
nicht bemerkbar wenn ich z.B. für den Nachnamen ein Index
setze, von daher würde ich gerne wissen ab wann es sich lohnt,
es sich bemerkbar macht oder ob es außer der geschwindigkeit
noch andere vorteile gibt.

Es gibt einige grobe Empfehlungen, wann Indizes eingesetzt werden sollten. Indizes können sinnvoll sein bei Spalten, …
… die häufig in der WHERE-Klausel verwendet werden
… die mit AND verknüpft werden
… die in Joins verknüpft werden - Primär- und Fremdschlüsselspalten sind standardmäßig indiziert
… nach denen häufig sortiert wird
… nach denen häufig gruppiert wird

Wenig Sinn machen Indizes im Allgemeinen bei …
… Spalten in Funktionen oder arithmetischen Operationen
… Vergleichen auf Ungleichheit (!=,)
… LIKE-Vergleichen, die mit % beginnen
… Vergleichen auf NULL oder NOT NULL
… NULL-Werten in Spalten, nach denen sortiert wird

Es gilt aber auch zu beachten, daß einige Datenbanksysteme mit Optimizern arbeiten, die SQL-Anweisungen umstellen, um sie performanter auszuführen. Das könnte einige der obigen Punkte relativieren.

Um einen Anhaltspunkt zu bekommen, ob ein Index etwas bringt oder nicht, kann man die sogen. Selektivität ermitteln (Selektivität = Anzahl unterschiedlicher Werte einer Spalte / Anzahl aller Datensätze einer Tabelle). Man sagt, bei einer Selektivität von 85-100% sei ein Index günstig. Aber in der Praxis wird man auch auf Spalten mit einer geringeren Selektivität einen Index legen, wenn man sich davon einen Vorteil verspricht.

Bei kleinen Tabellen (

Ich hoffe, das hilft Dir weiter.

Peter

Danke erstmal
Naja das habe ich auch in der Hilfe gefunden
aber das mit den 10.000 Datensätzen war schon hilfreich/ bestätigt meine Vermutung

Wenn man aber irgendwann wirklich viele Datensätze hat
z.B. 100.000 wie macht es sich bemerkbar

Nur einige Sekunden ( Minute )

Hallo Bernyhb,

wenn du auf einem modernen PC mit schneller Festplatte z.B. (SATA II) arbeitest, wird es ein paar Sekunden sein.

Wenn du aber im Netzwerk, ggf. über ein VPN-Netz arbeitest und der Server eine schnelle Platte (SATA II) und genügend RAM hat, du deine Abfragen schlecht programmiert hast, kann es sogar bis zu Stunden / Wochen / Monate dauern.

Schnelle Datenbankprogramme bedingen folgende Dinge (in der Reihenfolge):

  1. schnelle Festplatte
  2. schnelles Betriebssystem
  3. viel RAM
  4. gute Programmierung
  5. gutes Datenbankmanagement
  6. Anzahl zugreifender User
  1. Indexierung

D.h. bevor die Indexierung einen Erfolg zeigt, sind noch 1000 andere Dinge wichtiger!

Frage: bremst ein Fliegenschiß auf der Windschutzscheibe eines Autos dessen Endgeschwindigkeit? Wenn JA, um wieviel %?

Grüße aus Essen
Wolfgang

Danke dann bin ich jetzt etwas schlauer.
Ich mache gerade meinen ECDL-Advanced und die Infos in den Büchern gehen nicht ganz so weit.
Zeigen nur wie es geht, mich interesieren aber immer auch die Hintergründe.

Aber ich denke ( ist das richtig? ) das die Situationen wo es sich Bemerkbar macht kaum passieren, weil bei so gr. Datenmengen und Server etc. wird doch SAP benutzt oder ?

Also ist es eigentlich egal ob ich Indezies setze, eine Vernünftige Beziehung und Abfrage ist wichtiger ?

Habe ich das Richtig verstanden ?

Danke dann bin ich jetzt etwas schlauer.

das freut mich :smile:

Ich mache gerade meinen ECDL-Advanced und die Infos in den
Büchern gehen nicht ganz so weit.

warum nur hatte ich sowas schon vermutet? :smile:

mich interesieren aber immer auch die Hintergründe.

das ist eine gute Einstellung

Aber ich denke ( ist das richtig? )

ja, das ist richtig, dass du denkst ;D

das die Situationen wo es
sich Bemerkbar macht kaum passieren, weil bei so gr.
Datenmengen und Server etc. wird doch SAP benutzt oder ?

nein, denn SAP ist ein Warenwirtschaftssystem mit diversen Schnittstellen zur Produktion etc. pp.
es hat natürlich auch Datenbanken, es wird jedoch nicht als Ersatz für Datenbanken eingesetzt, es nutzt die Datenbanken wie jedes andere Programm auch.

die Kapatzität von Access ist begrenzt. Wenn man mit großen Datenmengen arbeiten muß, nimmt man SQL-Datenbanken wie z.B. MS SQL, MySQL, Oracle, Informix usw.

Also ist es eigentlich egal ob ich Indezies setze, eine
Vernünftige Beziehung und Abfrage ist wichtiger ?

jaein, du solltest den wichtigen Aspekt der Hardware nicht außer Acht lassen! D.h. nur die Kombination von geeigneter Hardware, und gute Programmierung und Datenbankdesign ergeben eine schnelle Datenbank.

Indezies haben ihre Daseinsberechtigung, sind aber für die Geschwindigkeit nicht relevant.

Habe ich das Richtig verstanden ?

softwaretechnisch: ja (bis auf die Sache mit SAP) :smile:

Grüße aus Essen
Wolfgang

Danke jetzt bin ich schlauer
auch was andere Datenbankprogramme betrifft.

SAP kommt ja auch noch dran was das lernen betrifft…

Hallo,

Indezies haben ihre Daseinsberechtigung, sind aber für die
Geschwindigkeit nicht relevant.

Auf DB Servern habe ich schon Abfragen um den Faktor 1000 beschleunigt mit der Applikation entsprechenden Indezies.
Die haben ganz sicher ihre Daseinsberechtigung. Allerdings nicht so sehr bei Access. Dies liegt aber daran, weil die durchschnittliche Access-DB locker in den Speicher jedes durchschnittlichen Computers passt.
Obwohl auch da kann man mit einem gut gesetzten Index ein paar Abfragen beschleunigen.

Gruss
Quaser