Optimierung der Performance

26.04.1991

1. Bei der Definition eines Indexes ist zu berücksichtigen daß eine hohe Index-Kardinalität nur dann erreicht wird, wenn die Werte der verwendeten Spalte eine geringe Redundanz aufweisen.

2. Bei zusammengesetzten Indexen sollte die Spalte mit der geringsten Redundanz an erster Stelle (höchste Ordnung) stehen.

3. Tabellen, die häufig mit ORDER BY, GROUP BY oder DISTINCT bearbeitet werden, sollten zur Vermeidung von internen Sortiervorgängen einen Clustered Index erhalten.

4. Tabellen, deren Table Space weniger als acht Pages umfaßt, sollten nicht mit einem Index versehen werden, da der Verwaltungsaufwand größer als der Nutzen ist.

5. Um eine optimale Verwendung der Indizes zu gewährleisten, sollten folgende Funktionen in der WHERE-Bedingung vermieden werden:

- mathematische Ausdrücke,

- Skalarfunktionen,

- Vergleich unterschiedlicher Datentypen,

- Vergleich gleicher Datentypen mit unterschiedlichen Feldlängen.

6. Komplexe WHERE-Bedingungen sind so auszubauen schon beim DASD-Zugriff durch den Data Manager eine möglichst exakte Auswahl der Daten erfolgt.

7. Beim Zugriff auf Tabellen mit zusammengesetztem Index ist die Verwendung der Indexspalten höherer Ordnung in der WHERE-Bedingung die Voraussetzung für eine optimale Indexnutzung.

8. SELECT-Anweisungen mit Standardfunktionen (AVG, SUM, MAX etc.) können ausschließlich durch Indexzugriffe, das heißt ohne Zugriff auf die Datentabellen, bearbeitet werden wenn für die zu bearbeitenden Spalten ein Index existiert.

9 SELECT-Anweisungen, die interne Sortiervorgänge verursachen sollten zu deren Beschleunigung möglichst wenig Spalten auswählen.

10. Der JOIN ist wegen besserer Indexnutzung dem SUBSELECT vorzuziehen.

11. Der Umfang der durch einen JOIN, erzeugten Ergebnistabelle ist durch den Einsatz einer entsprechenden WHERE-Bedingung einzuschränken.

12. Beim JOIN einer Tabelle mit sich selbst (AUTO-JOIN) ist die Tabelle mit zwei verschiedenen symbolischen Namen anzugeben, da sonst kein Index verwendet wird.

13. Die Verwendung des Operators BETWEEN anstelle von >= AND <= bewirkt eine besserer Indexnutzung.

14. Bei Verwendung des Operators LIKE sollte der Platzhalter nicht an der ersten Stelle der Maske stehen, da dies die Indexverwendung beeinträchtigt

15. Die Verwendung des Operators NOT in WHERE-Bedingungen ist zu vermeiden, da er in den meisten Fällen die Indexnutzung verhindert. Eine Ausnahme bilden dabei NOT >und< NOT , da diese Operatoren durch den Optimizer in positive Bedingungen umgesetzt werden.