BEISPIEL
Kapitel 9: Fortgeschrittene Datenbankprogrammierung
Abfrage-Optimierung
Hauptziele der Optimierung von Datenbanken sind im Allgemeinen Suchvorgänge und Abfragen. Um auch
in Access ein Maximum an Performance zu erreichen, hat Microsoft die Rushmore-Technologie von Fox-
Pro in die Datenbank-Engine von Access übernommen.
Was kann Rushmore? Grundsätzlich wird mit der Rushmore-Technologie nur der Zugriff auf Datensatz-
gruppen beschleunigt. Das betrifft beispielsweise Vergleiche mit einem der folgenden Operatoren <, >, =,
<=, >=, <>, BETWEEN, LIKE, IN, die wiederum mit AND bzw. OR verknüpft sein können. Nicht opti-
miert werden Suchzugriffe mit SEEK oder der Zugriff auf die gesamte Datenbank. Allerdings müssen Sie
einige Regeln beachten, damit die Rushmore-Technologie überhaupt effektiv umgesetzt werden kann.
Wichtig ist vor allem die Indizierung der Vergleichsfelder. Bei Vergleichen mit dem LIKE-Operator sollten
Sie keine Platzhalter vor dem Suchstring einfügen (z.B. LIKE "*ai"), derartige Abfragen lassen sich nicht
optimieren! Weiterhin sollten Sie, wo immer es geht, auf Basic-Code und selbst definierte Funktionen (z.B.
IIF) innerhalb von SQL-Abfragen verzichten, da sich auch diese Teile der Abfrage nicht optimieren lassen.
Sollen die Datensätze in einer Ergebnismenge gezählt werden, überlassen Sie am besten Access die Wahl des
Feldes, indem Sie z.B. statt SELECT COUNT(name) ... einen Platzhalter verwenden: SELECT COUNT(*) ...
Haben Sie einen Index mit umgekehrter Sortierfolge erstellt und ist der Vergleichsoperator nicht »=«, dann
kann die Abfrage nicht optimiert werden.
Nachfolgend finden Sie einige Beispiele für optimierbare Ausdrücke:
SELECT ... FROM ...
WHERE name = 'Mayer' AND vorname='Hans'
Der obige Ausdruck kann dann optimal eingesetzt werden, wenn sowohl das Feld
Name
als auch das Feld
Vorname
indiziert sind. Die Abfrage wird in zwei Einzelabfragen zerlegt, die Ergebnismengen werden mit
AND verknüpft.
SELECT ... FROM ...
WHERE name = 'Mayer' OR plz='03345'
Die Abfrage besteht ebenfalls aus zwei Einzelabfragen, die Ergebnismengen werden jedoch vereinigt, da das
Zutreffen einer Bedingung genügt.
Weitere Möglichkeiten
Neben den oben genannten Faktoren haben Sie noch weitere Einflussmöglichkeiten auf die Leistungsfähig-
keit Ihrer Datenbank:
Ändert sich die Ergebnismenge einer Abfrage selten, so sollten Sie anstatt der Abfrage besser eine
Tabelle erstellen. Diese kann schneller und effektiver verarbeitet werden.
Die Ergebnismenge einer Abfrage sollte nur die Felder enthalten, die unbedingt gebraucht werden
(SELECT * FROM... möglichst vermeiden!).
Komprimieren Sie ab und zu die Datenbank. Auf diese Weise wird die interne Datenstruktur wieder
optimiert.
584

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.