Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Requêtes
Requêtes Forum d'entraide sur les requêtes SQL spécifiques à PostgreSQL, les triggers, les vues, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/10/2011, 12h28   #1
Membre à l'essai
 
Inscription : juillet 2006
Messages : 88
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 88
Points : 22
Points : 22
Par défaut Index fullText non utilisé (Version 2)

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 :
A(int id,text monText,tsvector monVecteur);
- j'ai un index
Code :
1
2
CREATE INDEX ndx_text
  ON A USING gin(monVecteur);
- j'ai un trigger before insert
Code :
NEW.monVecteur:= to_tsvector(lower(NEW.monText));
Lorsque je fais ma requête, l'index n'est pas utilisé :
Code :
1
2
3
EXPLAIN analyze SELECT id
FROM A
WHERE monVecteur @@ to_tsquery(lower('mou'))
Voici le résultat :
Code :
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)
moumoune65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 18h01   #2
Modérateur
 
Inscription : octobre 2008
Messages : 1 508
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 508
Points : 2 040
Points : 2 040
Deux remarques sur l'explain:
- le nombre estimé de résultats est de 4736 alors que le nbre réel est 10.
y-a-t-il eu un ANALYZE de la table?

- le temps d'exécution étant de moins d'1.5ms, la requête est quand même très rapide et il se peut qu'utiliser l'index n'apporte rien.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 08h01   #3
Membre à l'essai
 
Inscription : juillet 2006
Messages : 88
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 88
Points : 22
Points : 22
Mea culpa,j'avais fais un explain sur la même requête mais en limitant le résultat à 10. J'ai mis le réel résultat d'explain.

Ensuite, j'ai lu dans d'autres post que l'index n'était pas forcément utilisé.
J'ai pour le moment 35 000 lignes mais la base va rapidement croître et atteindre plus de 500 000 lignes.
moumoune65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h29.


 
 
 
 
Partenaires

Hébergement Web