11 Stimme

MySQL: Wofür ist ein Index nötig?

Frage von SmartUser | 10.11.2011 um 10:31

Ich habe bisher nicht viel Ahnung von Datenbanken und MySQL, bastele aber gerade an meinen ersten Internetprojekten. Nun stoße ich immer wieder darauf, dass es wichtig sein soll, einen Index über bestimmte Spalten zu definieren.

Was soll das und wieso ist ein Index überhaupt notwendig?

AntwortenPositivNegativ
3Beste Antwort3 Stimmen

Ich möchte dir das Thema Index an einem einfachen Beispiel erklären:

Beispiel

Stell dir vor, du hast ein Telefonbuch und möchtest darin zu eine Nummer zu einem bestimmten Namen finden. Diese Aufgabe ist vergleichsweise einfach. Du schlägst das Telefonbuch auf und weißt sofort, ob dein gesuchter Name vor oder nach dem Namen steht, den du gerade siehst. So kannst du die Nummer schnell und effizient finden.

Stell dir nun aber ein anderes Telefonbuch vor, das nicht nach den Namen sortiert ist und in dem alle Namen durcheinander stehen. Wieder sollst du eine Nummer finden und suchst nach dem Namen. Dieses mal ist die Suche aber alles andere als effizient. Wenn du das Telefonbuch nicht gerade aufschlägst und durch Zufall die richtige Nummer findest, musst du das ganze Telefonbuch von vorne bis hinten durchgehen und schauen, ob irgendwo dein Name steht. Diese Suche ist alles andere als effizient und kostet dich sehr viel Zeit.

Genauso ist es bei Datenbanken und MySQL. Im ersten Beispiel mit dem Telefonbuch ist ein Index über die Spalte "Name" gesetzt und die Suche kann schnell ausgeführt werden, im zweiten Beispiel gibt es einen solchen Index nicht und die Suche ist langsam und mühsam.

Index in MySQL

Wenn du nun also eine Tabelle hast, in der es eine Spalte mit einer eindeutigen Nummer (ID) gibt und du möchtest immer wieder Daten aus einer Reihe mit einer bestimmten ID auslesen, solltest du über diese Spalte einen Index setzen. Nur wenn du über diese Spalte einen Index gesetzt hast, kann MySQL effizient wie im Telefonbuch nach einer bestimmten Nummer suchen, ansonsten müssen alle Datensätze durchgegangen werden.

Natürlich fällt es bei wenigen Datensätzen kaum auf, wenn MySQL nicht effizient suchen kann, denn natürlich suchen Computer schnell. Aber auch das frisst unnötig Ressourcen und sobald viele Datensätze vorhanden sind und/oder viele Nutzer gleichzeitig auf die Datenbank zugreifen, zahlt sich ein gut gesetzter Index sofort aus!

Index über jede Spalte?

Man möge nun vielleicht denken: "Super! Ich setze einfach einen Index über jede Spalte und alles funktioniert prima!". So einfach ist es aber nicht, ein Index hat auch seine Nachteile.

Erstens verbraucht ein Index zusätzlichen Speicherplatz und was am gravierensten ist: Ein Index muss gepflegt werden. Bei jedem Einfügen von neuen Daten und bei jeder Änderung von Daten, die den Index betreffen, muss der Index angepasst und auf den neuesten Stand gebracht werden.

Wenn man nun also 30 Indizes über Spalten angelegt hat, nach denen nie gesucht wird, die aber ständig geändert werden, ist der vermeintliche Vorteil ein Nachteil. Man sollte also genau überlegen, auf welchen Spalten sich ein Index wirklich lohnt und nur diese Spalten indizieren.
10.11.2011 um 17:37

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Was ist der Pearl Index?

Info | 0 Kommentare

HTACCESS: URL vereinfachen

Tutorial | 0 Kommentare

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.