Re: Implementierung mehrdimensionaler Indexe

From: Enrico Weigelt <weigelt(at)metux(dot)de>
To: pgsql-de-allgemein <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: Implementierung mehrdimensionaler Indexe
Date: 2005-08-09 20:58:14
Message-ID: 20050809205814.GB3002@nibiru.local
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

* Harald Fuchs <hf0614x(at)protecting(dot)net> schrieb:

<snip>
> Richtig. Ein funktionaler Index der Art
> CREATE INDEX fct_ix ON tbl ((col1 || col2))
> ist ausschließlich für Abfragen der Art
> SELECT whatever FROM tbl WHERE col1 || col2 = 'foo'
> zu gebrauchen.

Angenommen, man nehme einen Index col1||'*'||col2, wobei '*' jetzt
mal ein Trennelement sei, das im Text nicht vorkommt, dann kann man
ihn auch sehr wohl für col1='foo' benutzen. Allerdings ist die
richtige Codierung nicht ganz trivial.

Beispiel: col1, und col2 sind integer.
Dann ist der Key einfach col1*k+col2, wobei k der Wertbereich für
int sei. Wenn man also col1 spezifiziert, dann sucht man quasi eine
ganze Teilmenge von col1=0..k

Allerdings scheint mir hier die Implementierung deutlich komplizierter
als bei einem mehrstufigen Index - somit könntest Du wirklich
Recht haben.

Aber wirklich interessant ist doch hier die Frage:

Wie suche ich nach col2='xyz' ? (mit diesem Index).
Wenn es sich einfach nur um einen zweistufigen Index, d.h. an den
Blättern des einen hängen nochmal die Teilbäume für die
zweite Spalte, handelt, dürfte das recht knifflig werden:
Man müßte trotzdem jeden Teilbaum einzeln scannen.

Lösen ließe sich das, indem man einfach nochmal die Umkehrung
speichert, ergo. (col2,col1). Okay, trivial, aber was ist mit
(col1,col2,col3) ?

Irgentwie glaube ich nicht, daß das automatisch gemacht wird.

cu
--
---------------------------------------------------------------------
Enrico Weigelt == metux IT service
phone: +49 36207 519931 www: http://www.metux.de/
fax: +49 36207 519932 email: contact(at)metux(dot)de
---------------------------------------------------------------------
Realtime Forex/Stock Exchange trading powered by postgresSQL :))
http://www.fxignal.net/
---------------------------------------------------------------------

In response to

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Harald Fuchs 2005-08-10 09:41:24 Re: Implementierung mehrdimensionaler Indexe
Previous Message Pierre Pönisch 2005-08-09 17:02:41 Re: Implementierung mehrdimensionaler Indexe