66 Stimmen

SQLite: Index über eine oder mehrere Spalten anlegen

Info von SmartUser | 28.10.2013 um 22:02

In dieser kleinen Info möchte ich euch zeigen, wie ihr in einer SQLite-Datenbank Indices über eine oder mehrere Spalten einer Tabelle hinzufügen könnt.

Soweit ich weiß lässt sich im CREATE TABLE Statement nur ein PRIMARY KEY Index erstellen, alle weiteren Indices müssen entsprechend in weiteren Anfragen nach der Erstellung der Tabelle angelegt werden.

Index anlegen im CREATE TABLE Statement

Schauen wir uns zunächst ein typisches CREATE TABLE Statement zum Erstellen einer neuen Tabelle an.

CREATE TABLE IF NOT EXISTS tab (
id INTEGER PRIMARY KEY, 
vorname TEXT, 
nachname TEXT)

Wir erstellen uns die Tabelle namens "tab", falls noch keine gleichnamige Tabelle existiert. Die Tabelle besteht aus den Spalten id, vorname und nachname. Dabei haben wir hinter die Definition "id INTEGER" den Zusatz "PRIMARY KEY" angefügt. Dies gewährleistet, dass unsere Spalte "id" zum primären Index unserer Tabelle wird.

Index über eine Spalte anlegen

Als nächstes möchten wir einen Index über die Spalte "nachname" anlegen. Dazu verwenden wir folgende Syntax:

CREATE INDEX index_name ON tab_name (spalte) 

Oder in unserem Beispiel:

CREATE INDEX index_nachname ON tab (nachname)

Wir nennen unseren Index "index_nachname" und haben ansonsten einfach den Namen der Tabelle und der Spalte eingesetzt.

Index über mehrere Spalten anlegen

Wenn wir einen Index über mehrere Spalten anlegen möchten, können wir folgende Syntax verwenden:

CREATE INDEX index_name ON tab_name (spalte1, spalte2) 

In unserem Beispiel möchten wir einen Index über die Spalten nachname und vorname anlegen:

CREATE INDEX index_vorundnachname ON tab (vorname, nachname)

Mehrere Spaltennamen werden also einfach durch ein Komma voneinander getrennt, ansonsten bleibt der Aufbau des Statements identisch.

Zusatzspezifikationen

Möchten wir den Index nur dann erstellen, wenn dieser noch nicht existiert, können wir "IF NOT EXISTS" hinzufügen:

CREATE INDEX IF NOT EXISTS index_name ON tab_name (spalte) 

Soll der Index UNIQUE sein (keine 2 gleichen Werte im Index), ergänzen wir UNIQUE:

CREATE UNIQUE INDEX index_name ON tab_name (spalte) 

Wenn man einen UNIQUE Index angelegt hat und einen Datensatz in die Tabelle versucht einzufügen, der schon im UNIQUE Index existiert, führt dies zu einer Fehlermeldung. Im UNIQUE Index darf es keine doppelten Einträge geben.

AntwortenPositivNegativ

Über den Autor

AvatarDer Autor hat keine Kurzbeschreibung seines Profils angegeben.
Profil anzeigen

 

Ähnliche Themen

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.