Suchen | Neuer Index | Abbruch | Hilfe |
Übersicht |
|
Im Gegensatz zum MS-SqlServer unterstützt das hiesige System nur Indices auf einzelnen Spalten. Der Name des Index wird intern als Indexname verwendet. Der Status 'inactive' bedeutet, daß der Index physikalisch gelöscht wird, die erzeugte Definition jedoch noch erhalten bleibt.
Solange eine Tabelle hinreichend klein (< 100 Zeilen als grober Richtwert) ist, lohnt sich die Erstellung eines Index meistens nicht.
Indices sollten nur auf Spalten definiert werden, die hinreichend selektiv sind. Enthält die Spalte nur wenige Werte, so nutzt ein Index nichts. Die beste Wirkung erzielt ein Index auf einer Spalte, in welcher alle Werte verschieden sind.
Brauchbare Kandidaten für Indices sind Spalten, die oft direkt in Where-Bedingungen oder in Join-Verknüpfungen im Rahmen selbstdefinierter Sql-Abfragen vorkommen. 'Direkt' meint hier einen Ausdruck wie:
U.ArtikelId = A.ArtikelIdoder
A.A_Name = @str_InputDie Verwendung einer Spalte in einer Funktion oder in Form einer Verknüpfung mit einem Operator führt oft dazu, daß der Index wieder ignoriert und die gesamte Spalte gescannt wird.
Jeder Index verlangsamt Datenoperationen, da der Index durchsucht und ein passender Eintrag zusätzlich zur eigentlichen Datenzeile erzeugt werden muß. Indices sollten keinesfalls 'als Reserve' für möglichst viele Spalten erstellt werden.
Vor einem Upload einer umfangreichen Tabelle in eine bereits vorhandene Tabelle sollten in der Zieltabelle alle Indices deaktiviert werden, um den Upload zu beschleunigen.
Da ein Index die Spalte, für die er erstellt wird, mindestens kopiert, vergrößert jeder Index auf einer umfangreicheren Tabelle die Datenbank merklich. Falls die Datenbank ihre Maximalgröße schon fast erreicht hat, kann die Erstellung eines großen Index scheitern, da dieser zur Überschreitung der Maximalgröße führen würde.