S
evi48 schrieb:
Ich habe mir vorgestellt mit Hilfe des Index die suche zu beschleunigen. Was mir fehlt ist der Zugriff auf die Tabelle über den in Access bereits erstellten Index.
Normalerweise, wenn du eine SQL-Abfrage über den WHERE-Teil filterst, geht Access (wie jede andere DB) durch sämtliche Datensätze der Tabelle durch, um geeignete Datensätze zu finden ("Table Scan"). Das dauert natürlich bei vielen Datensätzen unglaublich lange. Wenn jedoch für sämtliche Spalten, die du im WHERE-Teil aufgeführt hast, mindestens ein Index vorliegt (am besten ein einziger Index über alle dort aufgeführten Spalten), kann Access sich diese Mühe sparen, da die Daten ja bereits vorsortiert vorliegen. Dann muss Access nur noch über eine z. B. binäre Suche einen in Frage kommenden Datensatz finden und kann dann in der Tabelle so lange nach "oben/unten" gehen, bis der erste unpassende Datensatz kommt ("Index Seek").
Du musst nichts anderes tun, als einen geeigneten Index anzulegen, der Access beim Suchen der passenden Datensätze hilft. Den Rest macht Access selber. (Wäre ja blöd, wenn Access nicht automatisch die Indexe nutzen würde, die du angegeben hast.)
Du musst definiv einen Geschwindigkeitszuwachs verspüren, sobald du einen passenden Index angelegt hast, sonst hast du 'was falsch gemacht. Wenn dir das Ganze mit Index immer noch zu langsam ist, dann würde ich vorsortieren, d. h. eine temporäre Tabelle anlegen, in der nur die Datensätze für *sämtliche* 100 Abfragen vorkommen. Dass macht es den 100 Abfragen dann erheblich leichter. Ist natürlich ein ziemlicher Aufwand (beim Öffnen des Formulars temporäre Tabelle anlegen oder leeren, INSERT INTO ..., nach Schließen des Formulars alles wieder löschen), hilft aber.