Bonjour, je viens de voir un post sur un problème de non utilisation d'un index.
Voici comment j'ai procédé :
-J'ai fais une table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
A(int id,text monText,tsvector monVecteur);
- j'ai un index
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
CREATE INDEX ndx_text
  ON A using gin(monVecteur);
- j'ai un trigger before insert
Code : Sélectionner tout - Visualiser dans une fenêtre à part
NEW.monVecteur:= to_tsvector(lower(NEW.monText));
Lorsque je fais ma requête, l'index n'est pas utilisé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
explain analyze select id
from A
where monVecteur @@ to_tsquery(lower('mou'))
Voici le résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
"Seq Scan on proprietaire_courant  (cost=0.00..4979.84 rows=171 width=4) (actual time=178.913..178.913 rows=0 loops=1)"
"  Filter: (ddenom_recherche @@ to_tsquery('mou'::text))"
"Total runtime: 178.945 ms"
Pourtant, le tsvector est bien renseigné!
Quelqu'un peut-il me dire quoi faire? (Postgresql 9.0)