On Thu, 16 Nov 2000, Gilbert ROBERT wrote:

> La version de postgres est la 7.0 sur une Ultra 5 sous solaris 2.6.
> 
> > > J'ai bien essay� de faire des index sur la colonne id p.e mais le temps
> > > de r�ponse est toujours aussi long!
> > Ainsi:
> >    CREATE INDEX sol_f_id_idx ON sol_f(id);  # ceci prend du temps.
> 
> c'est exactement comme cela.
> 
> > Donc l'index semble avoir un effet, du moins pour ma configuration.
> 
> Mais pas dans mon cas! ou alors j'ai fais qqchose de faux. 
> Dans l'autre index ou il n'y a que 130752 c'est quasi instantan�.
> 
> > hum, id �tant un integer me semble-t-il, j'aurais fait
> >   WHERE id = 130751;
> C'est juste je me suis plant� dans mon cut&paste

J'ai un peu loup� l'histoire qui c'est pass�, mais je tenais � pr�ciser
un truc. Si tu met dans ta clause WHERE id LIKE '130751'; une base de
donn�e effectuant la recherche va faire une esp�ce de type casting pour
chaque tuple de la table. Il est imp�ratif d'utiliser un op�rateur
math�matique et un nombre pour ton test. Soit:

        id = 130751;

et rien d'autre. A partir du moment ou tu met ton chiffre entre
guillemets, c'est une cha�ne de caract�re!

n.b. Si tu met un indexe sur un champ contenant une cha�ne de caract�re
justement et que tu utilises un like, il faut t'assurer que tu n'utilises
pas de wild card au d�but de ton crit�re de recherche. Sans quoi ton
indexe n'est d'office pas utilis�. Par un exemple:

        WHERE id LIKE '%urfeurFou%';  --> TRES MAUVAIS
        WHERE id LIKE 'SurfeurFou%' OR
              id LIKE 'surfeurFou%':  --> BEAUCOUP MIEUX

Essaie �a, si tu ne l'as pas d�j� fait!
 
> Je viens de faire un
> EXPLAIN  SELECT * FROM main_index_f WHERE id='130751';
> Index Scan using main_index_f_pkey on main_index_f  (cost=0.00..8.14 rows=10 
>width=40)
> 
> et puis un 
> 
> EXPLAIN  SELECT * FROM sol_f WHERE id='130751';
> Seq Scan on sol_f  (cost=0.00..77604.64 rows=39087 width=24)
> 
> Donc la clairement j'en deduis qu'il n'utilise pas mon index!
> et pourtant j'en ai bien fait un
> 
> sylex2000=>  CREATE INDEX sol_f_id_idx ON sol_f (id);
> CREATE
> 
> sylex2000=> \di
>          List of relations
>        Name        | Type  | Owner  
> -------------------+-------+--------
>  main_index_d_pkey | index | robert
>  main_index_f_pkey | index | robert
>  main_index_i_pkey | index | robert
>  sol_f_id_idx      | index | robert
> (4 rows)
> 
> J'avoue ne pas bien comprendre comment il d�termine l'index (c'est semble-t-il 
>ind�pendant du nom
> "Although you can use any name for the index, it is good practice to use the table 
>and column names as part of the index name...") et comment le forcer � l'utiliser. Ou 
>alors il y a autre chose!
> 
> 
> G.
> -- 
>                                |  UnixOnNous et Rejoignez le
> Gilbert ROBERT                 | "Groupe des Utilisateurs L�maniques de"
> ISSCO, University of Geneva    |     / /    (_)____   __  __ _  __  
> 40 bd pont d'arve              |    / /    / // __ \ / / / /| |/_/ 
> CH-1211 GENEVA 4               |   / /___ / // / / // /_/ /_>  <
> Tel: +41/22/705 8686           |  /_____//_//_/ /_//_____/ /_/\_\
> http://www.gilbert-robert.com  |      http://www.linux-gull.ch
> --
> http://www-internal.alphanet.ch/linux-leman/ avant de poser
> une question.
> 

                      \\\___///
                     \\  - -  //
                      (  @ @  )
+-------------------oOOo-(_)-oOOo------------------------------+
| Cedric Bapst            |      Home: +41(0)21 807 2530       |
| Le Clos C               |      Work: +41(0)21 631 8150       |
| CH-1174 Montherod       |      Fax : +41(0)21 631 8480       |
+-------------------------+-Oooo-------------------------------+
                     oooO   (   )
                    (   )    ) /
                     \ (    (_/
                      \_)

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question.

Répondre à