Partielle Indices

Partielle Indexes können verwendet werden, um nur den Teil einer Tabelle zu indizieren. Das macht besonders dann Sinn, wenn Sie beispielsweise Datenbestände speichern, die sehr viele gleiche Werte enthalten. Hier ist ein Beispiel:

test=# CREATE TABLE t_error (
	id 	int4, 
	tstamp 	timestamp DEFAULT now(), 
	error 	text, 
	status int4);
CREATE TABLE

Wenn wir beispielsweise die Rückgabewerte von Programmen oder den Status einer Finanztransaktion abspeichern wollen, werden wir feststellen, dass ein überwiegender Teil der Datensätze (also beispielsweise 90% oder mehr) den Status 0 (also alles in Ordnung) hat. Wenn wir einen Index auf die gesamte Spalte aufbauen, werden sehr viele Datensätze indiziert, die ohnehin funktioniert haben. Viel interessanter abzufragen sind die restlichen 10%, die womöglich eine Vielzahl von Fehlercodes enthalten. Genau für diese 10% kann man einen partiellen Index definieren:

test=# CREATE INDEX idx_error_status ON t_error (status) 
	WHERE status > 0;
CREATE INDEX




Cybertec Schönig & Schönig GmbH
PostgreSQL support, training, consulting
www.postgresql-support.de