Ich kenne mich mit Datenbanken nicht so gut aus und versuche nun, den Indexierungsmechanismus zu verstehen.
Soweit ich weiß, beschleunigt die Indizierung einer Spalte in einem RDBMS die Suche nach dieser Spalte. Dies gilt auch für die Triple-Stores. Nur bei diesen Indizes wird davon ausgegangen, dass Sie (zum Beispiel) hauptsächlich nach dem Thema, dann nach dem Objekt usw. suchen.
Ich bin mir bei RDBMS nicht sicher, aber in Dreifachgeschäften können Sie mehr als einen Index definieren, sodass das Geschäft den besten Index für jede Abfrage auswählt (hoffentlich habe ich das richtig verstanden). Natürlich erscheint folgende Frage:
Warum sollte ich nicht alle möglichen Indizes zu einem Triple Store hinzufügen und auf ein RDBMS erweitern, warum nicht Indizes für jede Spalte erstellen (vorausgesetzt, ich bin nicht zu faul)?
Platzieren Sie Indizes nur bei Bedarf. Als Faustregel gilt, wenn ich ein Datenbankschema entwickle, erhält jede Tabelle zunächst einen PK-Primärschlüssel-Clustered-Index. Dies ist die eindeutige Kennung für Daten in dieser Tabelle. In kann eine oder mehrere Spalten enthalten.
Danach füge ich in der Regel nur eindeutige Non-Clustered-Indizes zu Spalten hinzu, für die ich die Eindeutigkeit erzwingen möchte.
Dies ist das Basisschema. Wenn die Anwendung entwickelt und ausgereift ist, fügen wir nach Bedarf Indizes hinzu, die auf Leistungsaspekten und der Art und Weise basieren, in der die Daten abgefragt werden.
Jeder hinzugefügte Index erhöht den verwendeten Abstand und fügt zusätzliche Wartung hinzu. Wählen Sie Ihre Indizes also mit Bedacht aus.
quelle
Die Stärke von Indizes besteht darin, dass sie 1) eine Datenstruktur sind, die schnell durchsucht werden kann, und 2) kompakter als die tatsächlichen Tabellen sind, sodass mehr Indexe in den Arbeitsspeicher passen, anstatt auf die Festplatte ausgelagert zu werden.
Wenn Sie für jede Spalte einen Index haben, benötigen die Indizes selbst mehr Platz als die von ihnen dargestellte Tabelle. Wenn die Datenbank wirklich alle Indizes verwendet, dauert es länger, sie nur in den Arbeitsspeicher und aus dem Arbeitsspeicher auszutauschen. Außerdem muss jeder Index bei Inertisierung, Aktualisierung oder Löschung aktualisiert werden.
Darüber hinaus sind Indizes für eine einzelne Spalte nicht einmal das Beste, was Sie tun können. Die meisten Beziehungsdatenbanken erlauben tatsächlich einen Index für mehrere Spalten, und die Reihenfolge dieser Spalten spielt eine Rolle. Wenn ich zum Beispiel eine Datenbank nach allen Personen durchsuchen möchte, die zwischen 1980 und 1984 aus Klassen zu Duke gegangen sind, dann möchte ich einen Index über (School, ClassYear). Die Abfrage könnte keinen Index mit denselben Spalten verwenden, jedoch umgekehrt.
Um also jeden möglichen Index zu erstellen , gibt es mindestens n! Möglichkeiten zum Anordnen von Spalten in einem Index. Mit nur 5 Spalten gibt es 120 mögliche Indizes.
Da es so viele mögliche Indizes gibt, müssen Sie wirklich feststellen, welche Indizes für Ihre Anwendung nützlich sind, und nur diese erstellen.
quelle
Das Erstellen eines Index für jede Spalte in einer Tabelle ist in der Regel eine Verschwendung von Speicherplatz. Wie bereits erwähnt, kann dies Einfüge- / Aktualisierungsvorgänge verlangsamen. Ein Index wird verwendet, um Abfragen zu beschleunigen. Ich würde nur empfehlen, einer Spalte einen Index hinzuzufügen, wenn Sie beim Abfragen von Werten in dieser Spalte eine schlechte Leistung feststellen.
Für einige Datenbanken ist möglicherweise ein Index für den Primärschlüssel einer Tabelle erforderlich, sodass Sie möglicherweise keine Auswahl für diese haben. Wenn Sie über sehr große Textspalten verfügen, gibt es bestimmte Technologien, die für die Volltextsuche und den Index entwickelt wurden. Sie sind jedoch nicht immer die gleichen Arten von Indizes, die Sie für eine kleine numerische Spalte verwenden würden.
quelle