Was macht der INDEX-Ausdruck? Ein Beispiel am Ende:
%Vor%Ein Index ist eine Datenbankstruktur, die den Zugriff beschleunigen kann zu einzelnen Zeilen der Datenbank, wenn basierend auf den Feldern im Index gesucht wird.
In Ihrem Beispiel erstellt die Anweisung CREATE INDEX
einen Index mit dem Namen tags_tag
in der Tabelle tags
mit der Spalte tag
. Wenn Sie anhand des Feldes tag
nach Zeilen aus der Tabelle suchen möchten, verwendet die Datenbank möglicherweise den Index, um die Zeile effizienter nachzuschlagen. Ohne einen Index muss die Datenbank möglicherweise auf einen vollständigen Scan der Tabelle zurückgreifen, der viel länger dauern kann (abhängig von vielen Faktoren, wie Größe der Tabelle, Verteilung der Werte, genaue Abfragekriterien). Verschiedene Datenbanken unterstützen auch verschiedene Arten von Indizes, mit denen auf unterschiedliche Weise nach Daten gesucht werden kann.
Es gibt auch einen Nachteil von Indizes: Für jeden Index sinken die Schreibgeschwindigkeiten für diese Tabelle. Wenn Sie eine Zeile einfügen, bedeutet ein Index, dass zusätzlich zur Datenbank, die in die Zeile geschrieben wird, auch der Index aktualisiert werden muss.
Die Entscheidung, auf welchen Spalten ein Index platziert werden soll, kann knifflig sein. Wie immer sind Benchmarks oder reale Abfragen mit realen Daten die genaueste Methode zur Leistungsmessung. Im Allgemeinen werden Indizes für Spalten gewünscht, nach denen Sie suchen. Wenn Sie also eine Zeile nach tag
suchen wollen, ist es definitiv sinnvoll, dort einen Index zu setzen. Aber wenn Sie ein Adressbuch haben, müssen Sie (wahrscheinlich) nicht nach Straße, Postleitzahl oder Telefonnummer suchen, so dass es sich nicht lohnt, die Schreibleistung zu erreichen.
Ihre Primärschlüsselspalte (n) haben fast immer einen Index, der automatisch von der Datenbank generiert wird. Und wenn Sie die Werte einer bestimmten Spalte eindeutig erhalten möchten, kann ein UNIQUE INDEX
erstellt werden, um dies zu erzwingen.
Dies SO-Frage fragt nach Faustregeln für Datenbankindizes, die nützlich sein können.
Tags und Links postgresql indexing