Re: Re: Index pour requêtes de non-existence en PostgreSQL

From: REISS Thomas DSIC BIP <thomas(dot)reiss(at)interieur(dot)gouv(dot)fr>
To: Stephane Bortzmeyer <bortzmeyer(at)nic(dot)fr>
Cc: Guillaume Lelarge <guillaume(at)lelarge(dot)info>, pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Re: Index pour requêtes de non-existence en PostgreSQL
Date: 2010-05-20 12:18:20
Message-ID: 4BF5288C.1050609@interieur.gouv.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Bonjour,

-------- Message original --------
Sujet : [pgsql-fr-generale] Re: Index pour requêtes de non-existence en
PostgreSQL
De : Stephane Bortzmeyer <bortzmeyer(at)nic(dot)fr>
Pour : Guillaume Lelarge <guillaume(at)lelarge(dot)info>
Copie à : pgsql-fr-generale(at)postgresql(dot)org
Date : 20/05/2010 11:02
> Oui, avec cela, ça marche, merci. Par contre, l'utilisation de ce
> second index semble dépendre de si la requête a un joker % au début ou
> à la fin :
>
>
> essais=> EXPLAIN SELECT person FROM PhonesPersons WHERE phone LIKE '+34%';
> QUERY PLAN
> ----------------------------------------------------------------------------
> Bitmap Heap Scan on phonespersons (cost=6.06..569.94 rows=163 width=4)
> Filter: (phone ~~ '+34%'::text)
> -> Bitmap Index Scan on phone2_idx (cost=0.00..6.02 rows=163 width=0)
> Index Cond: ((phone ~>=~ '+34'::text) AND (phone ~<~ '+35'::text))
> (4 rows)
>
> essais=> EXPLAIN SELECT person FROM PhonesPersons WHERE phone LIKE '%6556676';
> QUERY PLAN
> ------------------------------------------------------------------
> Seq Scan on phonespersons (cost=0.00..18064.00 rows=13 width=4)
> Filter: (phone ~~ '%6556676'::text)
> (2 rows)
>

Cela a toujours été et tous les SGBDs à ma connaissance. Toutes les
recherches avec un joker % au début passe par une lecture séquentielle
de la table.
Oracle avait introduit un jour les index "reverse", mais c'est une
fonctionnalité mal documentée. Dans le genre, j'avais écrit ça fut un
temps: http://blog.postgresql.fr/index.php?post/drupal/396 qui a été
suivi par ça: http://blog.postgresql.fr/index.php?post/drupal/393

A+
Thomas

In response to

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Dimitri Fontaine 2010-05-20 12:26:36 Re: Re: Index pour requêtes de non-existence en PostgreSQL
Previous Message Guillaume Lelarge 2010-05-20 09:28:44 Re: Re: Index pour requêtes de non-existence en PostgreSQL