Database Reference
In-Depth Information
PostgreSQL erzeugt automatisch einen Index über den Primärschlüssel. Da-
bei ist der Primärschlüssel der Schlüssel und der Wert zeigt auf die entspre-
chende Zeile auf der Festplatte, wie in der Grafik unten zu sehen. Die Verwen-
dung des Schlüsselwortes
UNIQUE
ist eine weitere Möglichkeit, einen Index für
eine Tabellenspalte zu erzwingen.
SELECT * FROM events WHERE event_id =
2
;
"events.id" hash Index
"events" Table
1
LARP Club | 2 | 1
2
April Fools Day | | 2
3
Christmas Day | | 3
Sie können explizit einen Index mit dem Befehl
CREATE INDEX
erzeugen. Dabei
muss jeder Wert eindeutig sein (wie eine Hashtabelle oder eine Map).
CREATE INDEX
events
_
title
ON
events
USING
hash (title);
Für Kleiner-als/Größer-als/Gleich-Vergleiche wollen wir einen Index, der et-
was flexibler ist als ein einfacher Hash, etwa ein B-Tree (siehe Abbildung 3,
Ein B-Tree-Index eignet sich für bereichsorientierte Queries.
, auf Seite 22).
Stellen Sie sich eine Query vor, die alle Events nach dem ersten April fin-
den soll.
SELECT
*
FROM
events
WHERE
starts >=
'2012-04-01'
;
Dafür ist ein Baum die perfekte Datenstruktur. Um einen B-Tree-Index für
die
starts
-Spalte anzulegen, verwenden wir Folgendes:
CREATE INDEX
events
_
starts
ON
events
USING
btree (starts);
Nun können wir eine bereichsorientierte Abfrage über die Datumsangaben
durchführen, ohne die ganze Tabelle durchsuchen zu müssen. Das macht bei
Millionen (oder Milliarden) von Datensätzen einen gewaltigen Unterschied.