Ich bin neu in Datenbanken und habe gelesen, dass das Hinzufügen eines Index zu einem Feld, über das Sie suchen müssen, die Suchzeiten dramatisch beschleunigen kann. Ich verstehe diese Realität, bin aber gespannt, wie es tatsächlich funktioniert. Ich habe ein wenig nach dem Thema gesucht, aber keine gute, prägnante und nicht zu technische Antwort gefunden, wie es funktioniert.Warum beschleunigt das Hinzufügen eines Index zu einem Datenbankfeld die Suche über dieses Feld?
Ich habe die Analogie gelesen, es ist wie ein Index auf der Rückseite eines Buches, aber im Falle eines Datenfeldes von eindeutigen Elementen (wie E-Mail-Adressen in einer Benutzerdatenbank), mit der Rückseite der Buchanalogie würde die gleiche lineare Nachschlagezeit wie eine nicht indizierte Suche bereitstellen.
Was passiert hier, um die Suchzeiten zu beschleunigen? Ich habe ein wenig über die Suche mit B+-Trees gelesen, aber die Beschreibungen waren ein wenig zu tief. Was ich suche, ist ein Überblick über das, was vor sich geht, etwas, das meinem konzeptionellen Verständnis hilft, nicht technische Details.
Dies liefert immer noch keine ausreichende Antwort. In einer Tabelle werden Dinge als Felder (Spalten) gespeichert, so dass wir uns ein Datenfeld als ein Kapitel in einem Buch vorstellen können. Wenn wir also das E-Mail-Kapitel des Buches gehen, ist es immer noch genauso schnell, nach einer E-Mail zu suchen wie im Index des Buches. Wir scannen nicht die ganze Tabelle nach einem Artikel, den wir finden wollen ... nur das relevante Feld. –
Sie schlagen vor, * ALL * die Daten für jede Zeile in jedem Kapitel erneut zu speichern? So, dass Sie ein "Nachname" -Kapitel haben, sortiert nach Nachname, Vornamen, Nachname, Geburtsdatum, Geburtsort, Benutzername, E-Mail und eine 1000-Wort-Biografie auflisten. Dann haben Sie ein "username" -Kapitel, sortiert nach Benutzername, wieder mit Vornamen, Nachname, Geburtsdatum, Geburtsort, Benutzername, E-Mail und eine 1000-Wort-Biografie. Dann haben Sie ein "E-Mail" -Kapitel, sortiert nach E-Mail, Vornamen, Nachname, Geburtsdatum, Geburtsort, Benutzername, E-Mail und eine 1000-Wort-Biografie. Dies scheint eine sehr ineffiziente Nutzung des Weltraums zu sein ... –
Ok, denk mal so darüber nach. Wir haben ein Buch, das nur aus eindeutigen E-Mail-Adressen besteht (keine Wiederholungen). Das ist es, kein anderer Inhalt. Wenn wir in diesem Buch einen Index hätten, wäre es eine exakte Kopie des Inhalts des Buches, die nur irgendwie sortiert wäre (obwohl es davon abhängt, wer den Index erstellt). In diesem Fall ist die Suche nach einer E-Mail-Adresse im Buch oder im Index gleichwertig. Deshalb sage ich, die Buchindexanalogie scheitert. Es ist offensichtlich mehr als das, da eine indizierte Datenbanksuche eine E-Mail viel schneller findet als ein vollständiger Scan. –