Moin!
Welche Eigenschaften sollten indizierte Spalten einer MySQL nach Möglichkeit aufweisen? Was ist hier im allgemeinen sinnvoll?
Sie sollten bereits nach wenigen Zeichen Eineindeutigkeit aufweisen, sodass es nicht notwendig wird, breite Indexe zu bauen. Das kostet nämlich Speicherplatz und viel Performance bei der Verwaltung des Index-Baumes. Außerdem sollten sie möglichst balanciert[tm] sein, dass heißt, nicht zuviele Werte (Häufungspunkte) in einer schmalen Untermenge des Index haben.
Ich widerspreche.
Wenn es um die Fragestellung "Welche Eigenschaften sollten indizierte Spalten haben?" geht, dann lautet meine Antwort: "Egal".
Man kann sich seine Daten ja nicht aussuchen. Wenn es in einer Telefonliste hundert "Meier" gibt, dann ist das so. Und den Namen kann man eben nur als CHAR, VARCHAR oder TEXT/BLOB speichern - mehr Auswahl gibt es nicht.
Um die Verwaltung des Index hat sich die Datenbank zu kümmern.
Entscheidend ist: Index ja oder nein? Eine Spalte, die immer nur so mitgeschleppt wird, aber niemals (bzw. sehr selten) zur Selektion von Datensätzen herangezogen wird, muß nicht indiziert werden, weil das unnötigen Aufwand bedeutet. Hingegen wird eine Spalte wie der Name mit Sicherheit indiziert sein, weil man eben sehr häufig nach Namen suchen wird.
Ein guter Index zeichnet sich also durch eine hohe Auszeichnungsgüte und eine gleichmäßige Vertilung aus.
Das ist für die Programmierer der Datenbank interessant, nicht für die Nutzer derselben.
- Sven Rautenberg
Die SelfHTML-Developer sagen Dankeschön für aktuell 20885,68 Euro Spendengelder!