Re: Index avec mes propres types ?

From: Dimitri Fontaine <dfontaine(at)hi-media(dot)com>
To: pgsql-fr-generale(at)postgresql(dot)org
Cc: Stephane Bortzmeyer <bortzmeyer(at)nic(dot)fr>
Subject: Re: Index avec mes propres types ?
Date: 2008-09-04 13:12:26
Message-ID: 200809041512.29037.dfontaine@hi-media.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Bonjour,

Le jeudi 04 septembre 2008, Stephane Bortzmeyer a écrit :
> [C'est une question qui est, pour l'instant, essentiellement de
> curiosité. Mais j'aurais peut-être à utiliser ça un jour.]
>
> Si je crée mes propres types
> <http://www.postgresql.org/docs/8.3/interactive/xtypes.html>, puis-je
> encore utiliser des index ?

C'est possible, via les OPERATOR CLASS. Tu dis à PostgreSQL quels opérateurs
vont avec ton type (opérateurs maison ou non, symboles habituels ou pas) et
lesquels ton index doit utiliser (la Strategy, pour = < > et autres dans
btree par exemple).
http://www.postgresql.org/docs/8.3/static/xindex.html
http://www.postgresql.org/docs/8.3/static/sql-createopclass.html

> Si je prends l'exemple de la documentation, des nombres complexes, que
> je mets dans une colonne x, est-ce que :
>
> SELECT * FROM Test WHERE x = (1, 0)
>
> pourra t-elle utiliser un index ou bien faudra t-il examiner tous les
> nombres ?

Utilisation d'index spécifique possible, pour un BTree il suffit de fournir
les opérateurs <= < = > >=, pour GiST et GIN il faut coder quelques fonctions
d'interface.

> Plus fort, si que je crée des fonctions real() et imaginary() me
> permettant d'accéder aux parties réelles et imaginaires de ces
> nombres, une requête comme :
>
> SELECT * FROM Test WHERE real(x) = 0
>
> pourra t-elle utiliser un index sur les parties réelles ou bien faudra
> t-il examiner tous les nombres ?

J'imagine que tu peux même créer un index fonctionnel dans ce cas, non ?

Pour un exemple que j'espère complet et détaillé, voir prefix :)
http://prefix.projects.postgresql.org/
http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/prefix/prefix/
http://pgsql.tapoueh.org/site/html/prefix/index.html
http://pgsql.tapoueh.org/site/html/news/pgloader-prefix.pdf

Cordialement,
--
dim

In response to

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message BPascal 2008-09-05 06:33:58 pg_hba.conf
Previous Message Stephane Bortzmeyer 2008-09-04 12:29:55 Index avec mes propres types ?